问题描述
我执行了以下简单程序,期望 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>