2014-08-30 133 views
2

我有一個我想傳遞給服務器的ID數組。我在網上看到的其他答案描述瞭如何在url中傳遞這些id作爲查詢參數。我不想使用這種方法,因爲可能會有很多ID。這是我曾嘗試:

AngularJS:

console.log('my ids = ' + JSON.stringify(ids)); // ["482944","335392","482593",...] 

var data = $.param({ 
    ids: ids 
}); 

return $http({ 
    url: 'controller/method', 
    method: "GET", 
    data: data, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
}) 
.success(function (result, status, headers, config) { 
    return result; 
}) 

的Node.js:

app.get('/controller/method', function(req, res) { 
    console.log('my ids = ' + JSON.stringify(req.body.ids)); // undefined 
    model.find({ 
     'id_field': { $in: req.body.ids } 
    }, function(err, data){ 
     console.log('ids from query = ' + JSON.stringify(data)); // undefined 
     return res.json(data); 
    }); 

}); 

爲什麼我在服務器端得到undefined?我懷疑這是因爲我使用了$.params,但我不確定。

回答

4

休息GET方法使用URL作爲方法,如果你想使用屬性data在你的AJAX調用發送的更多信息,你需要的方法更改爲POST方法來傳輸信息。

所以在服務器你改變你的聲明:中

app.post(代替app.get(

1

如果您使用ExpressJS服務器端,req.body只包含請求體分析的數據。

隨着GET請求,data而不是發送查詢字符串,因爲they aren't expected to have bodies

GET /controller/method?ids[]=482944&ids[]=... 

而且,查詢字符串被解析並分配給req.query

console.log('my ids = ' + JSON.stringify(req.query.ids)); 
// ["482944","335392","482593",...] 
+2

對於通過此方法發送的數據量有限制嗎?我擔心的是,如果我發送大量ID,它會中斷。 – 2014-08-31 01:18:54

相關問題