jQuery Chained选择和coldfusion JSON问题

时间:2014-02-11 21:29:33

标签: jquery coldfusion

我有一个页面,它使用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选择框,以便链接的脚本可以正常工作。

非常感谢任何帮助。

0 个答案:

没有答案