2014-09-02 76 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); 
});