ASP.NET Javascript 到 Web 服务在回调函数之外获取 return 值

ASP.NET Javascript to web service get return value outside of callback function

我有一个 ASP.NET 网络服务,它是 return 一个简单的字符串值,我使用脚本管理器通过 javascript 调用这个网络服务,一切正常,但是,我需要来自调用 Web 服务的位置的 return 值,以及来自回调函数的 "not"。

类似这样的东西(抱歉伪代码不好)

function something() {
scriptmanager.webservice.method1(param, OnSuccess);
}
function OnSuccess(retVal) {
retVal <-- I need to do more with this, from within the "something" function above. Building an array for example calling this service multiple times.
}

我试过在函数外创建一个全局 javascript 变量,并在 OnSuccess 函数中分配它,但它总是在 "something" 函数中未定义。

那里的所有示例通常都会在页面上进行视觉更改,而不会真正对 Web 服务 return 值做一些有用的事情,我如何获得 return 值备份到主调用 "something" 函数?

您描述的是同步请求而不是异步请求,ASP.NET ScriptManager 除了异步调用外不支持任何其他请求。

不过,你可以使用jQuery .ajax()函数来进行同步调用,像这样:

function something() {
    var resultOfMethod1;

    $.ajax({
        type: "POST",
        async: false,
        url: "PageName.aspx/Method1",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(result) {
            resultOfMethod1 = result.d;
        }
    });

    // Do something here with resultOfMethod1
    // resultOfMethod1 will have the result of the synchronous call
    // because the previous $.ajax call waited for result before executing 
    // this line

}