将Javascript PageMethods“返回值”存储到变量中
Posted
技术标签:
【中文标题】将Javascript PageMethods“返回值”存储到变量中【英文标题】:Store Javascript PageMethods "return value" into a variable 【发布时间】:2013-04-24 05:24:42 【问题描述】:我有一个示例代码如下:
PageMethods.getServerTime(DateTimeFormat, OnRequestComplete, OnError);
它使用 javascript PageMethods 调用 C# 函数getServerTime
。但是,我注意到如果我使用以下代码,我将能够查看“返回值”。
function OnRequestComplete(result)
alert(result);
但是,如果我尝试使用以下代码:
var result = "";
result = PageMethods.getServerTime(DateTimeFormat, OnRequestComplete, OnError);
我永远一无所获。
根据我通过互联网的理解和研究,结果似乎得出以下结论:
Because the ajax call is async. It does not wait for the ajax call to complete.
因此,这是否意味着全世界都没有办法将“结果值”存储到 Javascript 变量?
我只能放一个alert()
或使用<div>
来显示结果。没有机会将其存储到 Javascript 变量中以供以后使用?
【问题讨论】:
【参考方案1】:你是对的。因为调用是异步的,所以在调用 getServerTime 时没有为“结果”分配任何值。但是您已经通过使用 OnRequestComplete 击中了头部,因为您可以确定它已被设置。如果您随后需要对该值执行某些操作,例如将其显示给用户,那么您必须在此方法中或通过从内部调用另一个方法来执行此操作。
var result = "";
function OnRequestComplete(res)
result = res;
DoSomethingWithResult();
function DoSomethingWithResult()
// Do your stuff here
【讨论】:
感谢您确认我的结论。顺便说一句,您的代码还意味着我必须立即使用result
,无论是在OnRequestComplete
函数还是DoSomethingWithResult
函数中。如果我不在职能范围内,我将失去这两个价值。我只想将它存储在一个简单的 Javascript 变量中,以便以后可以使用它。以上是关于将Javascript PageMethods“返回值”存储到变量中的主要内容,如果未能解决你的问题,请参考以下文章
通过 PageMethods 和 AJAX 调用将 JQuery 脚本错误记录到 ASP.NET 服务器