2014-09-02 33 views
1

Javascript代碼:AJAX的responseText不確定

............... 
............... 
var cutid = $(th).attr("data-cutid"); 

var request = $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Services/Cut.asmx/CheckCuts", 
    data: "{'cuts':" + JSON.stringify(ListCuts) + ",'idCut':'" + cutid + "'}", 
    dataType: "json" 
}).responseText; 

alert(request); // undefined 

從Web服務功能:

[WebMethod]   
    public string CheckCuts(List<CutM> cuts, Guid idCut) 
    { 
     return UtilCut.CheckCuts(cuts, idCut).ToString(); 
    } 

這個responseText是不確定的。爲什麼?


我加入異步:假到AJAX請求。 將async設置爲false意味着您要調用的語句必須先完成才能調用函數中的下一個語句。

此代碼:

function AjaxCheckCuts(ListCuts,cutid) 
{ 
    var request = $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Services/Cut.asmx/CheckCuts", 
    async: false, 
    data: "{'cuts':" + JSON.stringify(ListCuts) + ",'idCut':'" + cutid + "'}", 
    dataType: "json"  
    }).responseText; 

    var r = jQuery.parseJSON(request); 
    r = r.d; 
    return r; 
} 

回答

3

是Web服務正常工作?它是否返回一個HTTP 200?你能看到使用F12工具或Fiddler返回的數據嗎?

$.ajax()正在返回延期。定義要在異步調用完成時執行的done方法。沒有responseText屬性,這就是爲什麼它返回undefined

試試這個:

var cutid = $(th).attr("data-cutid"); 

var request = $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Services/Cut.asmx/CheckCuts", 
    data: "{'cuts':" + JSON.stringify(ListCuts) + ",'idCut':'" + cutid + "'}", 
    dataType: "json" 
}); 

request.done(function(result){ 
    alert(result); 
});