JQuery等待Ajax结果

时间:2013-04-22 18:55:30

标签: jquery

我有一个函数,通过将方法名称和数据作为参数来进行Asp.Net Web服务调用。将数据发送到服务没有问题。但我的重新定价值为undefined

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函数等到响应到来之后?我正在使用JQuery 1.9(async:false不起作用) 我看到一些解决方案建议使用$.When,但我不知道如何在这里使用。

2 个答案:

答案 0 :(得分:2)

在不使用promises(.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);
}

答案 1 :(得分:0)

使用async = false;

$.ajax({
   url: myUrl,
   dataType: 'json',
   async: false