$.get 回调函数未执行

$.get Callback function not executed

我执行了下面的简单程序,期望 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>

它说:

error: SyntaxError: Unexpected token S in JSON at position 0

服务器正在报告:

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, status, error) {
  console.log(`error: ${error}`)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>