AJAX responseText未定义

时间:2014-09-02 09:33:59

标签: jquery ajax json asmx responsetext

Javascript代码:

...............
...............
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

来自网络服务的功能:

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

responseText未定义。为什么呢?


我将 async:false 添加到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;
}

1 个答案:

答案 0 :(得分:3)

网络服务是否正常运作?它返回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);
});