ajax請求成功但不執行success-function回調函數的問題


在success:function(data){}下面加個error:function(){},看看是不是出錯了走了error。如果是,說明返回值類型不符合要求。

比如:下面代碼返回String類型。

@RequestMapping(value = "/v1/doUpdate", method = RequestMethod.GET)
@ResponseBody
public String doUpdate(HttpServletRequest request, HttpServletResponse response) throws IOException {
    return mrInfoService.doUpdate(request);
}

ajax請求預期服務器返回的數據就應該寫成dataType:'text',而不是dataType:'json',否則就走error回調函數。

function doUpdate(id){
    var mr = $("#mr"+id).val();
    $.ajax({
    url : localroot + "/v1/doUpdate" + "?id=" + id + "&mr=" + mr,
        type : 'GET',
        dataType: 'text',
        success : function(flag) {
        alert(flag);
    }
    });
}

而當返回值是集合時,

@RequestMapping(value = "/v1/findUpdateData", method = RequestMethod.GET)
@ResponseBody
public  findUpdateData(HttpServletRequest request, HttpServletResponse response){
    return mrInfoService.findUpdateData(request);
}

ajax預期服務器返回類型可以寫成json

$.ajax({
    url : localroot + "/v1/findUpdateData" + "?id=" + ids,
    type : 'GET',,
    success : function(data) {
        for(var i=0;i<data.length;i++){
            var mr = data[i].mr;
            if(null == mr || "undefined"==mr){
                mr = "";
            }
        }
    }
});

String dataType 預期服務器返回的數據類型。如果不指定,jQuery 將自動根據 HTTP 包 MIME 信息來智能判斷,比如XML MIME類型就被識別為XML。在1.4中,JSON就會生成一個JavaScript對象,而script則會執行這個腳本。隨后服務器端返回的數據會根據這個值解析后,傳遞給回調函數。可用值:

"xml": 返回 XML 文檔,可用 jQuery 處理。

"html": 返回純文本 HTML 信息;包含的script標簽會在插入dom時執行。

"script": 返回純文本 JavaScript 代碼。不會自動緩存結果。除非設置了"cache"參數。'''注意:'''在遠程請求時(不在同一個域下),所有POST請求都將轉為GET請求。(因為將使用DOM的script標簽來加載)

"json": 返回 JSON 數據 。

"jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。

"text": 返回純文本字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM