Javascript 代码,使用 jQuery 1.7:
$( function() {
$.get('/ajax_dummy', function() { alert('foo'); })
});
使用 Firebug,我可以看到发送了 HTTP GET 请求并返回了代码为 200 的“hello world”响应,所以一切看起来都很好。但是永远不会调用回调。
我不知道出了什么问题;这应该很简单吧?
Javascript 代码,使用 jQuery 1.7:
$( function() {
$.get('/ajax_dummy', function() { alert('foo'); })
});
使用 Firebug,我可以看到发送了 HTTP GET 请求并返回了代码为 200 的“hello world”响应,所以一切看起来都很好。但是永远不会调用回调。
我不知道出了什么问题;这应该很简单吧?
您没有提供,因此 jQuery 从您所说dataType
的响应标头中对内容类型进行“智能猜测” 。Content-Type
application/json
因此 jQuery 将响应视为 JSON,这意味着它将尝试自动解析它,从而导致错误。
因为请求导致错误
$.parseJSON( "hello world" );
"Invalid JSON: hello world"
成功回调显然不会被触发。
试一试:
$.ajax("/ajax_dummy", {
dataType: "text",
success: function() {
console.log("winning.");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus); //error logging
}
});
添加此标记
<div id="error"></div>
然后添加此处理程序以捕获 AJAX 错误
$("#error").ajaxError(function(event, request, settings){
$(this).append("<li>Error requesting page " + settings.url + "</li>");
});
或者,您可以像这样重写原始代码
$.get('/ajax_dummy', function() {
alert('foo');
}).error(function() {
// catch error
});
这是因为根据文档, $.get() 语法应该是这样的
jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
请注意“成功”回调选项。根据状态码 (200) 请求成功时调用的成功回调。但您的 url 可能不是有效路径或返回一些其他状态代码 (404),意思是“找不到文件”,因此会发生错误。所以从未调用过成功方法。
您的语法也没有定义“错误”回调。检查以下更完整的代码
$.get("/ajax_dummy", function() { alert('foo'); })
.error(function(d,e) { alert(e); })
.complete(function() { alert("complete"); });