2016-03-02 54 views
1

讓我先說我是一個新手/黑客。答案可能很簡單...我提前道歉。發送給節點/快遞服務器的數組訪問值

我通過jquery $ .ajax(POST)將對象發送到運行express的Node.js服務器。該物體看起來像這樣我的服務器上我做的Ajax調用之前:

var data = { 
    "to" : "[email protected]", 
    "attachment" : [{"file": "somefile.jpg"}, {"file": "someOtherFile.jpg"}] 
} 

這是調用我的服務器:

$.ajax({ 
    type: "POST", 
    url: "http://myHostHere.com", 
    data: data, 
    success: function(data){ 
     console.log("Success... Returned Data: " + data); 
    } 
}); 

在我的節點服務器這裏是接受請求的路徑:

app.post('/send/', urlEncodeParser, function(req, res){ 
     console.log("Req Body: " + JSON.stringify(req.body)); 
     }); 

urlEncodeParser的中間件是指這樣的代碼:

let urlEncodeParser = bodyParser.urlencoded({ extended:false });  

我的接收節點服務器接收對象,我可以很容易地通過req.body.to獲得「to」的值沒問題......出於某種原因,我無法弄清楚如何訪問'文件'值雖然。當我在我的節點服務器上console.logreq.body我現在看到我的對象看起來不同。

具體來說,我叫console.log(JSON.stringify(req.body))

輸出到控制檯看起來是這樣的:

"to" : "[email protected]", 
"attachment[0][file]" : "somefile.jpg", 
"attachment[1][file]" : "someOtherFile.jpg" 

我無法弄清楚如何訪問我的代碼的attachment[0][file]值。我曾嘗試每一次我得到一個錯誤TypeError: Cannot read property '0' of undefined

req.body.attachment[0].filereq.body.attachment[0][file]req.body.attachment[0]['file']我也嘗試只是console.log("attachment: " + req.body.attachment)和我attachment: undefined

任何幫助非常感謝!

+0

看起來中間件沒有解析它,所以它實際上是'req.body [「attachment [1] [file]」]'來訪問它 – adeneo

+0

Thanks @adeneo that works ... now to弄清楚爲什麼會發生這種情況。 – Koreys

回答

1

您可以用括號標記訪問該值:

req.body['attachment[0][file]'] 

更重要的是,雖然你找出爲什麼您的請求負載看起來像......不幸的是你沒有提供任何信息,你怎麼送請求...

+0

我更新了原始帖子,提供了更多信息......我認爲這與中間件有關係嗎? – Koreys

+0

@Koreys - look [here](http://stackoverflow.com/questions/6323338/jquery-ajax-posting-json-to-webservice?lq=1) – Amit

相關問題