将Javascript PageMethods“返回值”存储到变量中

时间:2013-04-30 10:12:40

标签: c# javascript variable-assignment pagemethods

我有一个示例代码如下:

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 个答案:

答案 0 :(得分:0)

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

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

function DoSomethingWithResult(){
    // Do your stuff here
}