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

发布于 2024-11-01 23:37:21 字数 476 浏览 2 评论 0原文

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

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

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

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

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

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

I'm using a script that looks like this:

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

However this causes a request to myservice/?undefined=undefined which probably indicates that jQuery is assuming data to be a map. Is there any way around this? Is there a way to serialize data manually (preferably without resorting to any 3rd party libraries)?

I tested my service manually and it works correctly with the data like ["test"].

EDIT: A bug concerning request method.

EDIT(2): Interesting, now it causes 400 Bad request. However if I switch to '["test"]' (a string) it works. I use jQuery 1.5.2.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剪不断理还乱 2024-11-08 23:37:21

方法:'POST'更改为类型:'POST'

文档 | example

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

change method: 'POST' to type: 'POST'

doc | example

Edit: for data you should use either query string example=test&examplex=test2 or javascript object {example: "test", examplex: "test2"}

向地狱狂奔 2024-11-08 23:37:21
$.ajax({
    url: 'myservice',
    method: 'POST',
    contentType: 'application/json',
    data: '["test"]',
});

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

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

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

Note that you need to pass in the json as a string.

If your json is complicated you can always use Crockford's stringify.

人间不值得 2024-11-08 23:37:21

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

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

另外,我认为你可以让你的 contentType 只是: 'json'

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

$("formId").serialize();

参见 此链接

data should be an object like:

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

Also, I think you can make your contentType just: 'json'

If you need to serialize a form and send in the values, jQuery has a function for that:

$("formId").serialize();

see This Link

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文