当前位置: 首页 > 面试题库 >

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

霍财
2023-03-14
问题内容

我已经用谷歌搜索了一段时间,只能找到能做什么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不会引发任何错误。它根本不会触发请求。


问题答案:

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

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

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


 类似资料:
  • 问题内容: 我有以下代码 在Chrome等中,请求不会被缓存,但是它们在IE中。我是否正确构建了请求? 问题答案: 应该是布尔值,而不是字符串:

  • 问题内容: 我正在使用对PHP的jQuery AJAX调用来验证登录表单。在php中,我创建一个会话,如果他们选中了“ remember me”复选框,我想创建一个cookie。这是php代码: 会话设置成功,但是cookie完全没有设置。我尝试设置所有值(域,路径等),但没有任何改变。有什么明显的我想念的吗? 问题答案: 以下是一些建议: 确保您指定了正确的日期到期格式 在重定向页面上设置coo

  • 查看spings autoconfiure源代码时,似乎每个自动配置类都设置了。 javadoc对这个特定字段给出了详细的解释: 指定是否应该代理{@code@Bean}方法以强制bean生命周期行为,例如,即使在用户代码中直接调用{@code@Bean}方法的情况下,也返回共享的单例bean实例。(…)如果不需要这样做,因为此特定配置的每个{@code@Bean}方法都是自包含的,并且设计为容器

  • 问题内容: 如何使用jQuery在Grails页面中发出Ajax请求? 如何在Grails Controller上设置击中方法的URL?假设控制器:“机场”,动作:“ getJson”,动作的输入为“ iata”。 我能够将静态网址设置为,但无法弄清楚如何为iata传递输入。 我对Grails并不陌生,并遵循IBM的“掌握Grails”教程系列。建议我给我一些有关将Grails与jQuery一起使

  • 问题内容: 为了解决CSRF问题,我为Ajax使用了客户端设置: 直到今天,一切正常。但是现在我需要在发布之前做一些检查: CSRF验证失败。请求中止。据我了解,我只是取消了ajaxSetup对新功能的操作。如何将这两件事结合起来? 问题答案: 使用代替。 如您所说,定义了默认处理程序,然后可以将其覆盖。使用,您可以注册多个处理程序以在发送ajax请求之前触发。与自定义处理程序配合正常。

  • 问题内容: 上下文: chrome浏览器扩展程序使用JQuery请求来自远程django应用程序的响应。Django识别出该请求是通过AJAX发出的,并以“HelloAJAX!”响应。我以这个伟大的榜样为基础进行锻炼。由于此请求是通过chrome扩展程序发出的,因此该请求是跨站点发出的,因此我在Django视图上使用了装饰器。 问题: 我的Django视图无法将请求识别为AJAX请求,并且没有响应