$.ajax()方法在請求成功後老是執行error中的函式
阿新 • • 發佈:2019-01-09
- JS中的ajax 請求如下:
$.ajax({
url: default_setting.formObj.action,
type: "POST",
data: jsonObj,
dataType: "json",
success: function(res) {
var callbacks = $.Callbacks('stopOnFalse');
callbacks.add(default_setting.formObj.onSuccess)
callbacks.fire(res);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// var res = eval("(" + XMLHttpRequest.responseText + ")");
// alert(res.message);
alert("Operation failed");
}
})
後臺返回時返回了一個String型別的單數,就造成了老是執行error中的函式的現象,檢視文件,發現Jquery ajax方法中的dataType的說明:預期伺服器返回的資料型別。如果不指定,jQuery 將自動根據 HTTP 包 MIME 資訊來智慧判斷。由此可見我這裡指定了json型別,返回了text型別,所以走了error的回撥。
解決:將dataType去掉,就能正常執行回撥,但是我不推薦。在真實專案中,應該制定一個ajax請求返回結果類(比如JsonBean),所有ajax請求方法的返回型別都應該是JsonBean,這樣指定dataType=’json’,不會出現其他么蛾子。
JsonBean的實體可以是這樣的
public class JsonBean implements Serializable {
private static final long serialVersionUID = 1L;
private boolean success;
private String code;
private Object result;
// 構造方法,getter方法 略
}