从概念上讲,我对AJAX的理解是异步并行发送到服务器的请求。当我在页面上使用多个UpdatePanels
并触发多个异步回发时(例如使用按钮),我注意到第二个请求在第一个请求完成之前不会启动。
但是当我使用JQuery ajax并使用PageMethods
/ WebMethods
时,我的请求会被并行处理。
为什么ASP.NET AJAX的行为方式存在差异?
此外,当我反复单击UpdatePanel中的按钮时, 中止 以前的请求。我期待他们排队。
任何帮助?
答案 0 :(得分:2)
This blog post似乎可以解决您的问题并提供解决方案。他使用一些javascript来排队多个请求并将它们批量发送到服务器(我认为)。
答案 1 :(得分:2)
因为它必须表现那样。
UpdatePanel的异步回发仍然只是:回发。如果允许并行发生多个回发,则他们的新ViewState通常会彼此不同步。然后,下一个回发将抛出一个ViewState验证错误和/或在第三次回发完成后,其中一个回发对Page的状态的修改将会丢失。
另一方面,页面方法和Web服务调用不受WebForms ViewState或页面生命周期的阻碍。因此,由于浏览器的同时请求限制允许(通常为4-8,但在IE6等某些浏览器中仅为2),因此许多可能并行发生。