我有一个页面,它使用jquery.chained.select连接2个选择框,一个是品牌的选择框,另一个是多选框,其中填充了属于该品牌的产品选择。
我正在使用Adobe Coldfusion。问题是数据库中有超过15000个产品,因此正常的cfquery返回产品选择框的结果会使页面在加载时非常慢。我创建了另一个页面,它以JSON的形式返回产品结果,但是我无法通过多个选择加载多个选择框来加载产品。下面是我用来从prod-json.cfm页面获取JSON并填充选择框的脚本:
<script type="text/javascript">
// JavaScript Document
// The queryToObject function
var queryToObject = function(q) {
var col, i, r, _i, _len, _ref, _ref2, _results;
_results = [];
for (i = 0, _ref = q.ROWCOUNT; 0 <= _ref ? i < _ref : i > _ref; 0 <= _ref ? i++ : i--) {
r = {};
_ref2 = q.COLUMNS;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
col = _ref2[_i];
r[col.toLowerCase()] = q.DATA[col][i];
}
_results.push(r);
}
return _results;
};
// Read the products
$.ajax({
data: {brand_id: val},
url: "prod-json.cfm",
dataType: "json",
success: function(data) {
var row, sData, _len, _i;
// Run the data thru queryToObject
data = queryToObject(data);
// Convert the object to a string to display it
sData = JSON.stringify(data);
// Print all products
$('#product_id').append('');
// Loop over the query
for (_i = 0, _len = data.length; _i < _len; _i++) {
row = data[_i];
$('.multiple').append('<option value=' + row.product_id + ' class="' + row.brand_id + '">' + row.product_title + ' - ' + row.make_title + ' ' + row.model_title + '');
}
}
});
</script>
这是jquery链式脚本:
<script type="text/javascript" charset="utf-8">
$(function() {
/* For jquery.chained.js */
$("#product_id").chained("#brand_id");
});
</script>
这些是选择框:
<p><label>Brand:<br />
<select name="brand_id" id="brand_id" class="styled">
<option value="0">None...</option>
<cfloop query="getbrand">
<option value="#brand_id#">#brand_name#</option>
</cfloop>
</select></label>
</p>
<p><label>Products:<br />
<select name="product_id" id="product_id" multiple="multiple" class="multiple">
</select>
</label>
</p>
顶级脚本应该以正确的格式将结果附加到product_id选择框,以便链接的脚本可以正常工作。
非常感谢任何帮助。