在Asp.NET中有很多ajax请求

时间:2011-12-04 17:39:08

标签: asp.net ajax

如何同时向ASP.NET服务器发送2个或更多ajax请求,在服务器上处理它们,然后在每个请求的某个TextBox中显示结果?

2 个答案:

答案 0 :(得分:1)

首先,我只将答案集中在更新面板上,因为您使用的是UpdatePanels。

现在, UpdatePanels无法处理2个请求,您不能只发送一个请求,在此请求完成之前,请求第二个请求。主要原因是因为UpdatePanel将每个Ajax调用ViewState发送回服务器,并等待答案,将viewstate更改为新答案。

因此,当更新面板在视图状态A上等待答案时,并获得与视图状态B的重放时,其简单的不显示它。当您从A或B,UpdatePanel请求发送/获取数据时,视图状态必须更改为新的视图状态。现在,当你问A的结果时,在你结束之前,你会问B的结果,你会得到2个不同的视图状态,其中一个会失败,因为在中间时间有变化。

ViewState不是唯一的想法,在每个更新面板中点击,页面回发所有输入后发布到页面,A和B输入以及页面内的所有其余部分,这也是一个问题。例如,对此进行成像,使用输入A + B触发A UpdatePanel,然后在A结束之前,使用相同的输入触发B UpdatePanel。现在A,等待来自A + B的结果,相同和B,但是在中间时间A的A + B结果现在是不同的,因为B已经改变它们 - 并且失败了。

UpdatePanel对于快速和脏的ajax来说是非常好的开箱即用技巧,但是这种自动化具有负面效果,可以在页面上发布所有数据!并且可以在当时处理一个请求。

可能的解决方案是删除UpdatePanel并在javascript上使用jQuery和Timers来请求许多调用并等待许多结果,并处理您显示它们的方式。其他可能的技巧是使用iframe,并取决于您赢得的内容,发送并从每个iframe获取许多请求。

答案 1 :(得分:0)

你做不到。 Ajax中的A代表异步。您一次发送一个请求,当它们完成后,它们会通过回调告诉您。

听起来你需要定义一个新的web服务方法或控制器动作,如果你正在使用MVC,它同时执行这两个任务,并调用那个