小编典典

在jQuery中将processData设置为false会中断我的AJAX请求

ajax

我已经用谷歌搜索了一段时间,只能找到能做什么processData: false。我找不到遇到相同问题的任何人。

我将JSON传递回服务器,并且不希望jQuery自动将数据转换为查询字符串,因此我将pr​​ocessData设置为false。如果我取出processData,则可以看到请求触发,但是一旦将其放入,就看不到正在发出任何请求(使用Firebug和Chrome开发工具)。

$.ajax({
            url: myUrl,
            type: "POST",
            data: {foo: "bar"},
            processData: false,
            contentType: 'application/json'
        });

我最初发出的请求比这个要复杂一些,但是我已经简化了它以缩小问题范围,但是这段简单的代码也不起作用(同样,如果我注释掉processData,它也可以起作用)。另外,我在控制台中没有看到任何JavaScript错误。

编辑

对于未来的网络搜索者:正如lonesomeday指出的那样,如果您提供JS对象或格式错误的JSON字符串,jQuery不会引发任何错误。它根本不会触发请求。


阅读 458

收藏
2020-07-26

共1个答案

小编典典

您想将数据作为JSON传递。您正在传递Javascript对象。JSON是一种将Javascript对象序列化为字符串的方法,以便可以传递它们而不会出现兼容性问题。

您实际上想在字符串中传递JSON:

$.ajax({
    url: myUrl,
    type: "POST",
    data: '{"foo": "bar"}',
    processData: false,
    contentType: 'application/json'
});
2020-07-26