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调用中有一个"receiver",在网络检查器中有两个"receive[]"实例,在服务器上有一个数据正确但参数名称错误的"receiver[]"实例。

你知道"收件人[]"中的"[]"是怎么做到的吗?

这就是JQuery对数据对象的作用:

要发送到服务器的数据。如果还不是字符串。它被附加到GET请求的url中。看见processData选项以阻止此自动处理。对象必须是键/值对。如果值是Array,则jQuery会序列化多个基于传统设置值的具有相同键的值(如下所述)。

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

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

最新更新