2015-10-13 97 views
0

我想发送一个数组作为json的ajax请求,但由于某种原因,如果我建立一个数据的数组我想发送并传递到数据属性,这是不同的,如果我手动输入我想要的。这里有一个例子:作为数组发送Ajax数据不同于发送为手动字符串

作品:

$.ajax({ 
    method: "PUT", 
    url: restURL, 
    data: { 
    id: 1, 
    number: 99 
    } 
}); 

什么在Chrome开发者控制台中的表单数据看起来像网络请求:

id:1 
number:99 

不起作用:

var array = []; 
array.push({ 
    id: 1, 
    number: 99 
}); 

$.ajax({ 
    method: "PUT", 
    url: restURL, 
    dataType: "json", 
    data: JSON.stringify(array) 
}) 

是什么在Chrome浏览器开发控制台中的表单数据看起来像网络请求:

[{"id":1,"number":99}]: 

我需要的数据在开发者控制台匹配的内容第一个输出,因为这是我们的服务器预计,但我无法弄清楚如何让这个与预先构建数组一起工作。任何帮助将不胜感激。

+1

在第一个例子,你不发送任何阵列。它只是一个对象。数据阵列服务器上预期的格式是什么? –

+0

@OrestHera第一个例子中的格式 – David

回答

1

在第一个示例中,您正在发送窗体编码键/值对。

在第二个你发送的是一个字符串......恰巧是json ......但它只是一个没有密钥的值。

尝试:

data: {myArray: array} 

然后使用该密钥myArray

1

正如@charlietfl说,你的问题是,你是数据设置到阵列其中jquery documentation 说,在服务器接收数据参数必须是对象

一个解决办法可能是让你的阵列作为数据对象的属性, 例如:

var arr = []; 
arr.push({ 
    id: 1, 
    number: 99 
}); 

var myObj = { data: arr}; 

$.ajax({ 
    method: "PUT", 
    url: restURL, 
    data: myObj 
}); 

希望这有助于