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
}
我有一个 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
}