【问题标题】:Store Javascript PageMethods "return value" into a variable将Javascript PageMethods“返回值”存储到变量中
【发布时间】: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 变量中以供以后使用?

【问题讨论】:

    标签: c# javascript variable-assignment pagemethods


    【解决方案1】:

    你是对的。因为调用是异步的,所以在调用 getServerTime 时没有为“结果”分配任何值。但是您已经通过使用 OnRequestComplete 击中了头部,因为您可以确定它已被设置。如果您随后需要对该值执行某些操作,例如将其显示给用户,那么您必须在此方法中或通过从内部调用另一个方法来执行此操作。

    var result = "";
    function OnRequestComplete(res) {
        result = res;
        DoSomethingWithResult();
    }
    
    function DoSomethingWithResult(){
        // Do your stuff here
    }
    

    【讨论】:

    • 感谢您确认我的结论。顺便说一句,您的代码还意味着我必须立即使用result,无论是在OnRequestComplete 函数还是DoSomethingWithResult 函数中。如果我不在职能范围内,我将失去这两个价值。我只想将它存储在一个简单的 Javascript 变量中,以便以后可以使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    相关资源
    最近更新 更多