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;
}
答案 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);
});