javascript - jQuery AJAX 请求得到响应但没有回调被触发

标签 javascript jquery ajax

我有这样的代码:

$.ajax({
     method: "GET",
     url: page,
     dataType: 'html',
     data:data,
     success: function(data){
        console.log(data);
     },
     error: function(){
        console.log('error');
     }
 });

使用 Chrome 或 Firefox 的调试器,我可以看到请求成功,响应为 200 OK,并且响应包含预期数据。 然而,我的问题是,没有任何回调触发。 “成功”不会触发,“错误”也不会触发。此外,也不会触发延迟方法,例如“完成”、“然后”或“总是”。

在过去的几个小时里,我一直在尝试解决这个问题,但无济于事。我完全不知所措了。我也尝试过使用诸如“$.get”之类的方法得到相同的结果。

简而言之,我收到了响应,但 jQuery 中的代码没有触发任何回调,并且控制台中没有任何可见错误。

最佳答案

我在您的代码中看到的错误是:

method: "GET",

应该是:

type: "GET",

我在 jQuery 文档中没有看到任何关于 method 的记录属性。 type 属性应该默认为 "GET",所以这可能不是这里唯一的错误。


另外,也有即使ajax调用失败也不会调用error回调的情况(跨域请求)。来自 error 回调的 jQuery 文档:

This handler is not called for cross-domain script and cross-domain JSONP requests.

这是因为 jQuery 期望服务器发回特定形式的 javascript,如果服务器没有执行预期的操作,那么 jQuery 永远不知道请求何时返回并且无法处理它。

在这些情况下,您通常必须通过查看调试器中的网络跟踪来找出可能出了什么问题。


要检查的其他事项以确保您没有意外跨域:

  • 确保 ajax 调用和页面之间的域/子域完全相同。例如,一个常见的错误是其中一个包含 www. 而另一个没有。
  • 使页面和 ajax URL 都是相同的 httphttps
  • 如果使用非标准端口号,请确保页面和 ajax URL 使用相同的端口。

关于javascript - jQuery AJAX 请求得到响应但没有回调被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444109/

相关文章:

javascript - 我应该使用 ng-if 作为 CSS 属性选择器来编写 CSS 吗?

javascript - 是否可以允许 html 仅在特定域上运行?

javascript - 使用 AjaxStop 事件(在 Chrome 中)完成 ajax 调用后,将等待光标更改为默认值(自动)

javascript - 使用 jQuery Deferred 查找第一个可用数据源

javascript - Angular - 数据更新后运行 jQuery

javascript - 如何将大量文本发送到可编辑的 ="true"元素中?

javascript - 奇怪的 AJAX 错误 : not getting a response on AJAX call while getting a response when doing the exact call with different values

ajax - 单页应用程序和开放图谱

javascript - 从 Jquery 发送到 PHP 时 JSON 格式错误

javascript - 使用选择选项值更改表格填充