如何处理Ajax 4.0中的异步调用(使用jquery?)

问题描述:

在我的代码中,我做了这样的事情。如何处理Ajax 4.0中的异步调用(使用jquery?)

$.get('/Home/Module/Submit', 
       { moduleName: ModName, 
        moduleParameters: moduleParameters 
       }, 

    function(result) { 


     $("#" + target).html(result); 

    }); 

当我把警报在函数(结果){..} 它显示HTML完美(均在警戒,并在“.aspx页target'上)但 当我删除警报..在页面上'html'不出现或随机出现(这种方法被称为多次)

我认为'结果'来异步功能这就是为什么它不绑定与各自的'div ' 但是在最后一次迭代中,它每次都会绑定。

我们可以让流程停止,直到数据被绑定为止吗? 还是有没有任何功能(如警报),可以使数据绑定.. 不干扰UI(不像警报)?

您的回调函数使用target,该函数在外部范围(可能是全局范围)中定义。你说你多次进行这个调用,而且最后一次迭代每次都有效,所以我猜测target实际上是受外界影响而改变的?在这种情况下,很可能在执行时target的值不是您认为的值。您可以创建一个新的封闭器,其target将肯定不会改变:

$.get('/Home/Module/Submit', { data }, (function(t) { 
    return function(result) { 
     $("#" + t).html(result); 
    } 
})(target)); 

我们在这里所做的就是创建一个回报回调函数要使用新的匿名功能。您可以将其视为工厂功能。这个函数被立即调用,只是之前get的调用,因为必须对它进行求值以计算第三个参数以传递给get。我们称这个函数为target,因此target的值将是AJAX调用时的值,而不是AJAX响应时的值。将为每次迭代创建一个新闭包,其相应的t参数在创建时将对应于target的值。

你这样做不是想要拿出一些东西来保持JavaScript执行,直到执行了某段代码。

+0

html随机获取绑定...但最后的位置始终显示...此问题仅在Internet Explorer中出现,而不在Chrome和Firefox中 – dexter 2010-01-27 09:00:54