从服务器检索值时,ASP.NET AJAX如何工作?

时间:2009-05-15 21:01:12

标签: asp.net javascript ajax

如果我想从javascript调用服务器函数来从数据库中检索一个人的名字(仅作为示例)......我去了......

name = myServices.getName(userId);

如果我的脚本管理器具有对具有web方法getName(int userId){}的.asmx文件的服务引用,则应正确调用此函数,并最终返回该userId的名称。< / p>

不幸的是我想做....

name = myServices.getName(userId); 警报(名称);

但是,在执行ASP.NET AJAX时,它会调用web方法并在等待服务器响应之前继续执行(我理解这是ajax的重点,以阻止浏览器在等待数据时冻结)

在我继续执行之前,我需要从服务器取回名称...如何解决此问题?

4 个答案:

答案 0 :(得分:3)

您可以将方法作为参数添加到服务方法中,该方法将成功调用方法,您可以执行其他操作。

例如:

function test(){

        PageMethods.MyMethod("name", OnMyMethodComplete);

    }



    function OnMyMethodComplete(result, userContext, methodName)

    {

      alert(result);

    }

答案 1 :(得分:0)

如果要同步调用Web方法,则需要手动设置请求,并使用Sys.Net.XMLHttpSyncExecutor。

Here's an example(参见ExecuteSynchronously函数)

答案 2 :(得分:0)

对于javascript解决方案,您可以循环,直到name有值。根据延迟调整时间以保持应用响应

var time = 100;
window.setTimeout(name = '' ? wait : continue, time);




function wait()
{
    window.setTimeout(name = '' ? wait : continue, time);
}
function continue()
{
    //code having to do with name
    alert(name)
}

答案 3 :(得分:0)

祝贺。你迈出了迈向更大的异步世界的第一步。我肯定会使用CSharpAtl建议的回调。