我的网页上有以下Ajax代码。它基本上对数据库进行Ajax调用并返回一堆记录。 这段代码在Firefox中运行得很快/但在IE中运行速度非常慢。 我只是想知道是否有任何方法可以为IE优化此代码。
代码
var fill_test_table = function(data){
var tr;
for (var i=0; i < data.length; i++) {
tr=$('<tr/>');
tr.append("<td>" + widget[i].name + "</td>");
tr.append("<td>" + widget[i].age + "</td>");
tr.append("<td>" + widget[i].status + "</td>");
tr.append("<a href='widget.html?id=" + widget[i].id + "&age=" + widget[i].age + "&status=" + widget[i].status + "&name=" + widget[i].name.replace("'","%27") + "'</a><button>Edit</button> </td>");
$("#widget_table").append(tr);
}
$("#widget_table").append("</tbody>");
};
$(document).ready ( function() {
$.ajax({
url: "/cgi-bin/getwdigets",
dataType: "json",
success: function(data) {
fill_test_table(data);
}
});
})
我找到了以下帖子jQuery Ajax call very slow in IE, but instant in Firefox并试图实施一些建议。但如果有任何明显的项目需要修复,我想知道。
答案 0 :(得分:2)
问题是渲染页面,而不是ajax调用。所以你应该试试这样的事情:
Fragment
希望它有所帮助。
答案 1 :(得分:0)
ajax调用没有错。 for循环是它在IE中非常慢的原因。
尝试创建一个字符串,然后将其附加到DOM。
或
尝试创建文档片段,然后将片段附加到DOM中。
答案 2 :(得分:0)
试试这个
var fill_test_table = function(data){
var innerHtml = '';
for (var i=0; i < data.length; i++) {
innerHtml +='<tr><td>' + widget[i].name + '</td>'
+'<td>' + widget[i].age + '</td>'
+'<td>' + widget[i].status + '</td>'
+'<td><a href="widget.html?id=' + widget[i].id + '&age=' + widget[i].age + '&status=' + widget[i].status + '&name=' + widget[i].name.replace("'","%27") + '"</a><button>Edit</button> </td></tr>';
}
$("#widget_table").html('<tbody>'+innerHtml+'</tbody>');
};
答案 3 :(得分:0)
我敢打赌,这不是请求本身很慢,而是你的循环添加了dom元素。此外,您错过了包含该链接的最后一个单元格的开始load
。这应该更快:
func load(user: User) -> RACSignal {
return self.getBlocks(user).doNext {
self.blocks = $0 as! [Block]
}
}
private func getBlocks(fromUser: User) -> RACSignal {
let query = Block.query()!
query.whereKey("fromUser", equalTo: fromUser)
query.includeKey("toUser")
return query.rac_findObjects()
}