微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 doc中看到任何记录的方法属性. type属性应该认为“GET”,所以这可能不是唯一的错误.

此外,即使ajax调用失败(在跨域请求中),也存在不会调用错误回调的情况.从jQuery doc for error callback:

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

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

在这些情况下,您经常需要弄清楚在查看调试器中的网络跟踪时可能出现的问题.

要检查的其他事项,以确保您不会意外跨域:

>确保ajax调用页面间的域/子域完全相同.例如,一个常见的错误一个人有www.在它上面而另一个没有.>使页面和ajax URL都是相同的http或https.>如果使用非标准端口号,请确保page和ajax URL都使用相同的端口.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐