jQuery Ajax Array序列化不正确

时间:2016-05-11 15:04:49

标签: javascript jquery ajax

这很奇怪,虽然应该很简单。

代码:

var recipients = [];
recipients.push(uuid1);
recipients.push(uuid2);

$.ajax({ 
    url: '/api-url/',
    type: 'POST',
    data: {'recipient': recipients, 'message': message, 'subject': subject},
    dataType: 'json'
}) ...

这可以在Chrome网络检查器中找到:

recipient[]:8b99fa41-0f8f-4882-b14f-dc258a765b15
recipient[]:add61999-9baa-4096-a92f-fbb144a4a981
subject:test
message:testtest

这到达服务器:

{u'recipient[]': [u'8b99fa41-0f8f-4882-b14f-dc258a765b15', u'add61999-9baa-4096-a92f-fbb144a4a981'], u'message': [u'testtest'], u'subject': [u'test']}

正如您所看到的,我们在ajax调用中有一个“收件人”,网络检查器中有两个“收件人[]”实例,服务器上有一个“收件人[]”,但数据名称错误。< / p>

任何想法'收件人[]'中的'[]'是如何到达那里的?

1 个答案:

答案 0 :(得分:2)

这是JQuery对您的数据对象所做的事情:

  

要发送到服务器的数据。它被转换为查询字符串if   还不是一个字符串。它附加到GET请求的URL。看到   processData选项可防止此自动处理。对象必须   是键/值对。如果value是一个数组,jQuery序列化多个   具有相同键的值基于传统设置的值   (如下所述)。

要将其作为JSON发送,您需要将其转换为JSON字符串:

...
type: 'POST', 
data: JSON.stringify({'recipient': recipients, 'message': message, 'subject': subject}),