Javascript代码,使用jQuery 1.7:
$( function() {
$.get('/ajax_dummy', function() { alert('foo'); })
});
使用Firebug,我可以看到HTTP GET请求已发送,并返回代码为200的“hello world”响应,因此一切似乎都很好。但回调永远不会被调用。
我不知道出了什么问题;这应该是这么简单吧?
答案 0 :(得分:9)
您没有提供dataType
,因此jQuery会对您所说的Content-Type
响应application/json
标题中的内容类型进行“智能猜测”。
因此jQuery将响应视为JSON,这意味着它将尝试自动解析它,从而导致错误。
因为请求导致错误
$.parseJSON( "hello world" );
"Invalid JSON: hello world"
成功回调显然不会被解雇。
答案 1 :(得分:5)
给这个撕裂:
$.ajax("/ajax_dummy", {
dataType: "text",
success: function() {
console.log("winning.");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus); //error logging
}
});
答案 2 :(得分:0)
添加此标记
<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
});
答案 3 :(得分:0)
这是因为根据文档,$ .get()语法应该像这样
jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
请注意“成功”回调选项。基于状态代码(200)在请求成功时调用的成功回调。但您的网址可能不是有效路径或返回一些其他状态代码(404),意味着“找不到文件”,因此会发生错误。所以成功方法从未被称为。
您的语法也没有定义“错误”回调。检查以下更完整的代码
$.get("/ajax_dummy", function() { alert('foo'); })
.error(function(d,e) { alert(e); })
.complete(function() { alert("complete"); });