AJAX 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
来自Web服务的function:
[WebMethod] public string CheckCuts(List cuts, Guid idCut) { return UtilCut.CheckCuts(cuts, idCut).ToString(); }
responseText未定义。 为什么?
我向ajax请求添加了async:false 。 将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 = rd; return r; }
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); });