【发布时间】:2012-10-11 16:37:38
【问题描述】:
我正在尝试使用数据库数据填充 HTML 下拉列表。为此,我正在从数据库中检索数据并创建选项元素,如下所示:
var obj = eval("(" + data + ")");
for (i = 1; i <= obj.DATA.length; i++) {
var col_val = obj.DATA[i - 1];
$("#dropdown").append('<option value="' + col_val + '">' + col_val + '</option>');
}
我尝试了另一种方法如下:
$("#dropdown").html(data);
其中,data 是一个字符串,其中包含由调用的 CFC 页面在使用 cfloop 循环数据库查询后返回的选项元素列表。
在添加新选项之前,我将使用以下任一语句删除旧选项。
$('#dropdown').empty();
$('#dropdown option').remove();
$('#dropdown').html('');
经过分析,我发现删除选项导致了最大延迟。
是否有更快的替代 JavaScript 或 Jquery 函数可用于删除选项?或者您是否建议任何变通方法来提高性能?
注意:为此我必须使用 ColdFusion 和 AJAX。我也不能使用 ColdFusion 的内置 AJAX 功能。
谢谢!!
【问题讨论】:
-
您使用 JavaScript 填充此客户端与使用 ColdFusion 在服务器端预生成它的任何原因?
-
首先:无论客户端或服务器端技术如何,我都不必刷新页面。请让我知道服务器端技术是否可以做到这一点,即 ColdFusion。
-
第二:在我的情况下,ColdFusion 的内置 AJAX 功能不是一个选项,例如 cfajaximport 等。
-
我看不出一个简单的循环有多慢。你的意思是ajax响应很慢?循环几个项目并添加到一个选择组合应该几乎是即时的。
-
数据库查询返回的行数最少为 4000-5000 行。因此,延迟很可能是由它必须动态创建的选项元素的数量引起的。您是否建议任何其他替代方法来显示和使用这些数据。
标签: jquery ajax drop-down-menu coldfusion cfc