0

我有一个示例代码如下:

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 变量中?

我只能放 aalert()或使用 a<div>来显示结果。没有机会将其存储到 Javascript 变量中以供以后使用?

4

1 回答 1

0

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

var result = "";
function OnRequestComplete(res) {
    result = res;
    DoSomethingWithResult();
}

function DoSomethingWithResult(){
    // Do your stuff here
}
于 2013-04-30T10:20:19.373 回答