ASP.NET Javascript到web服务获取回调函数外部的返回值

ASP.NET Javascript到web服务获取回调函数外部的返回值,javascript,asp.net,web-services,scriptmanager,pagemethods,Javascript,Asp.net,Web Services,Scriptmanager,Pagemethods,我有一个ASP.NET web服务,它返回一个简单的字符串值,我使用脚本管理器通过javascript调用这个web服务,一切正常,但是,我需要从调用web服务的位置返回值,而不是从回调函数返回值 类似这样的内容(为错误的伪代码感到抱歉) function something(){ scriptmanager.webservice.method1(参数,OnSuccess); } 函数OnSuccess(retVal){ retVal您描述的是同步请求,而不是异步请求,ASP.NETScript

我有一个ASP.NET web服务,它返回一个简单的字符串值,我使用脚本管理器通过javascript调用这个web服务,一切正常,但是,我需要从调用web服务的位置返回值,而不是从回调函数返回值

类似这样的内容(为错误的伪代码感到抱歉)

function something(){
scriptmanager.webservice.method1(参数,OnSuccess);
}
函数OnSuccess(retVal){

retVal您描述的是同步请求,而不是异步请求,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

}

在收到响应之前,您需要阻塞该线程。因此,就像在AJAX调用/promise中对返回变量进行while循环检查一样。谢谢,朋友。您为我节省了很多
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

}