Javascript代碼,使用jQuery 1.7:jQuery的Ajax回調從來沒有所謂的
$(function() {
$.get('/ajax_dummy', function() { alert('foo'); })
});
Firebug的,我可以看到的是,HTTP GET請求被髮送和一個「Hello World」返回代碼爲200的響應,所以一切都顯得精細。但回調從未被調用。
我不知道什麼是錯的;這應該這麼簡單吧?
Javascript代碼,使用jQuery 1.7:jQuery的Ajax回調從來沒有所謂的
$(function() {
$.get('/ajax_dummy', function() { alert('foo'); })
});
Firebug的,我可以看到的是,HTTP GET請求被髮送和一個「Hello World」返回代碼爲200的響應,所以一切都顯得精細。但回調從未被調用。
我不知道什麼是錯的;這應該這麼簡單吧?
您沒有提供dataType
這樣做的jQuery的內容類型是從響應Content-Type
頭,你說的是什麼application/json
「智能猜測」。
因此,jQuery將響應視爲JSON,這意味着它會嘗試自動解析它,導致錯誤。
因爲請求引起
$.parseJSON("hello world");
"Invalid JSON: hello world"
成功回調不會明顯被解僱的錯誤。
添加此標記
<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
});
原密碼給這個裂口:
$.ajax("/ajax_dummy", {
dataType: "text",
success: function() {
console.log("winning.");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus); //error logging
}
});
這是因爲根據文檔和$ .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"); });
`$ .get()`將失敗默默。切換到使用`$ .ajax()`與`error`方法,看看是否得到運行。如果確實如此,請查看給出的參數以瞭解發生了什麼問題。 – JAAulde 2011-12-14 18:11:12