ASP.NET Javascript到web服务获取回调函数外部的返回值
我有一个ASP.NET web服务,它返回一个简单的字符串值,我使用脚本管理器通过javascript调用这个web服务,一切正常,但是,我需要从调用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
function something(){
scriptmanager.webservice.method1(参数,OnSuccess);
}
函数OnSuccess(retVal){
retVal您描述的是同步请求,而不是异步请求,ASP.NETScriptManager
只支持异步调用
但是,您可以使用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
}