我有一个ASP页面,它使用jQuery AJAX在页面加载后将成员计数加载到一堆
它在Firefox中表现得非常好,并且适用于组数较少的客户端。
对于有许多组(500+)的少数客户端,在IE中出现错误。Ajax调用似乎是同步运行的,因为直到每个Ajax调用返回后,单击事件才会注册。
大多数客户端的Ajax请求系列只有1个请求。只有在拥有非常多组的客户端中,它才会被拆分为多个请求。
现在,我已经看到了一个错误,即如果链接在DOM加载后添加,则 $(“a”).click
函数不会被绑定。那些不起作用的链接不是由AJAX加载的,它们不属于这个类别。
这是伪代码:
ready()
{
// count the number of groups that this user has, adding the ids to a list
if( count < 50 )
{
runAjax();
}
else
{
// this calls the ajax request on groups of 50 ids
// it pauses briefly after each request by using setTimeout to call the next
runAjaxRecursively();
}
}
这里是Ajax请求:
// run the HTTPRequest
$.ajax({
async: true,
type: "POST",
url: "emailcatcount.asp?idList="+idList,
data: "idList="+idList,
dataType: "html",
success: function(html) { // blah blah blah }
});
无论如何,代码运行正常,请将任何错误视为打字错误。唯一的问题是,在IE中,点击事件不会触发,直到每个ajax调用都已返回。
有没有人知道为什么会发生这种情况?请注意,我将 async
设置为true。
这与jQuery在IE中如何处理ready事件有关吗?
我感到困惑,已经花了几天时间在这上面了,所以任何想法都会受到欣赏。