这很奇怪,虽然应该很简单。
代码:
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>
任何想法'收件人[]'中的'[]'是如何到达那里的?
答案 0 :(得分:2)
这是JQuery对您的数据对象所做的事情:
要发送到服务器的数据。它被转换为查询字符串if 还不是一个字符串。它附加到GET请求的URL。看到 processData选项可防止此自动处理。对象必须 是键/值对。如果value是一个数组,jQuery序列化多个 具有相同键的值基于传统设置的值 (如下所述)。
要将其作为JSON发送,您需要将其转换为JSON字符串:
...
type: 'POST',
data: JSON.stringify({'recipient': recipients, 'message': message, 'subject': subject}),