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

$.get 回调函数未执行

如何解决$.get 回调函数未执行

我执行了以下简单程序,期望 get 方法的回调函数将执行。但它只会进行 AJAX 调用,不会执行回调函数。由于此返回的数据未显示在警报框中。感谢您的帮助。谢谢

$(function() {
  $("#bt1").click(function() {
    url = "https://run.mocky.io/v3/5b0c30b2-1069-4640-9bb6-18ceb95c25c4";
    $.get(url,function(data) {
      alert(data);
    });
  });
});
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<div id="div1"> This is dummy data </div>
<button id="bt1"> Click here </button>

解决方法

添加一个 fail 处理程序,以便您可以查看 jQuery 报告的错误:

let url = "https://run.mocky.io/v3/5b0c30b2-1069-4640-9bb6-18ceb95c25c4";
$.get(url,function(data) {
  alert(data);
}).fail(function(jqXHR,status,error) {
  console.log(`error: ${error}`)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

它说:

错误:语法错误:JSON 中位置 0 处出现意外标记 S

服务器正在报告:

Content-Type: application/json; charset=UTF-8

但是身体:

Sun Jan  3 18:05:31 IST 2021

... 不是 JSON。


更改服务器端代码,使其报告正确的内容类型(可能是 text/plain)或将数据编码为 JSON


为了完整起见,我会提到您可以告诉 jQuery 在成功函数之后使用参数覆盖 Content-Type,但这是绕过问题而不是修复原因,所以我不不推荐。

let url = "https://run.mocky.io/v3/5b0c30b2-1069-4640-9bb6-18ceb95c25c4";
$.get(url,function(data) {
  alert(data);
},"text").fail(function(jqXHR,error) {
  console.log(`error: ${error}`)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

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