1. 程式人生 > >$.ajax()方法在請求成功後老是執行error中的函式

$.ajax()方法在請求成功後老是執行error中的函式

  • 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方法 略 }