jQuery无法将数组作为JSON内容类型发送

时间:2011-04-19 12:21:35

标签: javascript ajax json jquery

我正在使用如下所示的脚本:

$.ajax({
    url: 'myservice',
    type: 'POST',
    contentType: 'application/json',
    data: ["test"],
});

然而,这会导致对myservice/?undefined=undefined的请求,这可能表明jQuery假设数据是地图。有没有办法解决?有没有办法手动序列化数据(最好不要求助于任何第三方库)?

我手动测试了我的服务,它可以正常使用["test"]等数据。

编辑:有关请求方法的错误。

编辑(2):有趣,现在导致400 Bad request。但是,如果我切换到'["test"]'(一个字符串),它就可以工作。我使用jQuery 1.5.2。

3 个答案:

答案 0 :(得分:4)

method: 'POST'更改为type: 'POST'

doc | example

修改:对于data,您应该使用查询字符串example=test&examplex=test2或javascript对象{example: "test", examplex: "test2"}

答案 1 :(得分:1)

$.ajax({
    url: 'myservice',
    method: 'POST',
    contentType: 'application/json',
    data: '["test"]',
});

请注意,您需要将json作为字符串传递。

如果你的json很复杂,你可以随时使用Crockford的stringify

答案 2 :(得分:0)

数据应该是一个像这样的对象:

{var1: 'test', var2: 'test'}

此外,我认为您可以将您的contentType设为:'json'

如果您需要序列化表单并发送值,jQuery有一个函数:

$("formId").serialize();

请参阅This Link