将Ajax数据发送为与发送为手动字符串不同的数组

时间:2015-10-13 22:44:37

标签: javascript jquery arrays ajax

我正在尝试将一个数组作为json发送给ajax请求,但出于某种原因,如果我构建了一个我要发送的数据数组并将其传递给数据属性,那么它与我手动只是一样输入我想要的内容。这是一个例子:

使用:

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

chrome dev控制台中的表单数据对于网络请求是什么样的:

id:1
number:99

不起作用

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

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

chrome dev控制台中的表单数据对于网络请求是什么样的:

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

我需要数据来匹配开发控制台中第一个输出的数据,因为这是我们的服务器所期望的,但我无法弄清楚如何预先构建数组。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

在第一个示例中,您将发送表单编码键/值对。

在第二个你要发送的是一个字符串...恰好是json ......但它只是一个没有键的值。

尝试:

data: {myArray: array}

然后使用密钥myArray

在服务器上接收

答案 1 :(得分:1)

正如@charlietfl所说,您的问题是您将数据设置为数组,其中jquery documentation 说数据参数必须是对象

解决方案可能是将您的数组作为数据对象的属性, 例如:

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

var myObj = { data: arr};

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

希望这有帮助