![](/img/trans.png)
[英]How to use an array sent with an jQuery's AJAX post request + php?
[英]Array is flattened when it's sent through AJAX jQuery request
我使用主體解析器中間件在Express中編寫了以下端點。
app.post("/api/poll/new",api.NewPoll);
api.NewPoll = function(req,res){
if(!req.body) return res.status(400).send("MISSING BODY");
console.log(req.body,typeof(req.body));
if(!req.body.name) return res.status(400).send("MISSING NAME");
if(!req.body.options) return res.status(400).send("MISSING OPTIONS");
//rest of the endpoint goes here
};
端點期望的數據如下所示:
{
"name":"Poller",
"options":[
{
"name":"Jojo's Bizarre Adventure",
"desc":"A great show"
},
{
"name":"Bakemonogatari",
"desc":"A real good show"
},
}
當我通過郵遞員發送此數據時,一切正常。 req.body.options
存在並且是一個數組。 但是,當我在jQuery AJAX調用中執行完全相同的操作時,結果明顯不同:
var payload = {
name:"Poller",
options:g.newPollInfo
//g.newPollInfo contains the same array
}
$.ajax({
method:"POST",
url:"/api/poll/new",
data:payload,
success:function(data){
console.log(data);
},
error:function(req, status, error){
console.log(req,status,error);
}
});
我收到400錯誤,報告缺少選件。 印刷的需求主體如下所示:
{ name: 'Poller',
'options[0][name]': 'Jojo'\s Bizarre Adventure',
'options[0][desc]': 'A great show',
'options[1][name]': 'Bakemonogatari',
'options[1][desc]': 'A real good show' } 'object'
我以前從未遇到過這個問題。 問題並不明確,因為郵遞員使用相同的數據進行了請求,並且可以正常工作。 我能想到的唯一問題在於,該請求是通過通過安全連接提供服務的iframe發出的,但這沒有任何意義。
我不知道是什么原因導致此錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.