JQuery等待Ajax结果
我有一个函数,通过将方法名和数据作为参数来调用Asp.NETWeb服务。向服务发送数据没有问题。但是我的retun值是JQuery等待Ajax结果,jquery,Jquery,我有一个函数,通过将方法名和数据作为参数来调用Asp.NETWeb服务。向服务发送数据没有问题。但是我的retun值是未定义的 function ServiceCommand(method, mdata) { $.ajax({ url: "Service1.asmx/" + method, type: "POST", dataType: "json",
未定义的
function ServiceCommand(method, mdata) {
$.ajax({
url: "Service1.asmx/" + method,
type: "POST",
dataType: "json",
data: mdata,
contentType: "application/json; charset=utf-8",
success: function (msg) {
return msg;
},
error: function (e) {
return "error";
}
});
}
function Insert()
{
var Msg = ServiceCommand("HelloWorld", "{pwd:'1234',txt:'SomeText'}");
alert(Msg);// undefined
}
如何使ServiceCommand函数等待响应?我正在使用jQuery1.9(async:false
不起作用)
我看到一些建议使用$的解决方案。当
时,但我不知道如何在这里使用。使用async=false
$.ajax({
url: myUrl,
dataType: 'json',
async: false
不使用承诺(.when)的一种简单方法是将回调函数作为第三个参数传递到ServiceCommand中。这个函数将执行您需要对ajax调用的响应执行的任何操作
function ServiceCommand(method, mdata, onSuccessCallback) {
$.ajax({
url: "Service1.asmx/" + method,
type: "POST",
dataType: "json",
data: mdata,
contentType: "application/json; charset=utf-8",
success: function (msg) {
if (onSuccessCallback !== undefined) {
onSuccessCallback(msg);
}
},
error: function (e) {
return "error";
}
});
}
function Insert()
{
var Msg = ServiceCommand("HelloWorld", "{pwd:'1234',txt:'SomeText'}", onSuccess);
alert(Msg);
}
function onSuccess(msg)
{
alert(msg);
}
可能与否重复,该答案提示async:false,此处不能使用。那么您没有正确阅读答案。实际上我明确地说不要使用
async:false
。或者您将如何解释“1.同步AJAX调用--不要这样做”?您需要返回值的原因是什么?你能不能在success函数中执行必要的操作?@FelixKling是对的-答案解释了如何传入一个回调函数,这个回调函数可以为success函数设置。谢谢你这么做。也可以使用.when()@aliassce显示选项:如果使用多个Ajax调用/承诺,则只需要$.when
。我再次建议你看看我链接的答案,它试图解释一切。