$.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>