这是一个奇怪的问题,尽管它应该非常简单。
代码:
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}),