在Internet Explorer 8中通过ajax调用获取大数据(列表中的大约10000个项目)会卡住。其他浏览器如Chrome浏览器,火狐也会卡住但很快就会回来(几秒钟内就会出现)。 Internet Explorer需要花费大量时间来响应(以分钟为单位)。
我尝试过的事情:看到网上提供的建议后。
1)将$ .each方法更改为for循环。
2)在完成所有迭代后连接字符串中的元素然后最后我附加。 即
for(......){
finalList += "div"+response+"/div"
}
$("#List").append(fianlList)
3)在ajax调用async属性中给出了= async:false
4)此外,我已经尝试填写许多ajax调用中的所有项目,即ajax调用中的1000个项目,它只需等待5秒然后它将成为第二个,第三个.....直到所有收到了。 5秒等待浏览器安定下来。是吗?
下面, a)我们不能通过在文本框中输入字符串来显示ajax上的内容,因为我们需要显示所有内容。因为用户不会知道什么都存在。 b)我们无法通过向下滚动来加载按需加载更多数据,因为我们有搜索按钮以防用户知道特定项目并且他尝试搜索它然后如果没有加载则它将不可用。此外,我们不能要求用户进一步滚动以查看更多数据,因为我们不知道他将在哪个电话中获取确切的数据。 c)写入CSV文件并要求他们标记(Y / N)也不是更好的选择。
所以你们可以帮我解决这个问题。注意:这主要发生在IE上(我的版本是8)。
答案 0 :(得分:0)
您可以通过尝试以下方式对其进行优化:
var html = [], i = -1;
html[++i] = '<div>' + response + '</div>'
.
.
.
$("#List")[0].innerHTML = html.join('');
这是改善代码的一种方法。我在一本书中读过这篇文章,IE7的性能提升 37x