选择冻结使用JQuery .html()和JSON加载大量数据

时间:2013-03-20 12:09:00

标签: jquery json

我的代码:

$.getJSON("registro/backend.php?action=list&id="+sel.value, function(data){

            var options = [];

            for (var i=0; i<data.rows.length; i++) {
                options += '<option value="' + data.rows[i].id + '">' + data.rows[i].name + '</option>';
            }
            $("#select").html(options);
        })

当要加载的数据太大时(许多以JSON编码的数据),此代码冻结了选择和导航器。

有没有办法在后台加载或改善性能?

2 个答案:

答案 0 :(得分:0)

尝试使用$ .each函数...

$.getJSON("registro/backend.php?action=list&id="+sel.value, function(response){

                var options = [];

                $.each(response,function(index,data){
                    options += '<option value="' + data.rows[index].id + '">' + data.rows[index].name + '</option>';
                }
                }
                $("#select").html(options);
            })

答案 1 :(得分:0)

您应该在循环中存储数组的长度,并存储变量以减少对数组的访问。

for (var i=0,len=data.rows.length; i<len; i++) {
var row = data.rows[i];
options += '<option value="' + row.id + '">' + row.name + '</option>';
            }

参考:http://browserdiet.com/#use-for-instead-of-each