【发布时间】:2014-02-13 15:38:36
【问题描述】:
我有一个页面,用户可以上传产品照片,他从品牌选择框中选择品牌,该品牌将使用属于该品牌的产品填充产品选择框。
这一切都适用于冷融合,但随着我们添加更多产品,它变得更慢,我已经使用 JSON 格式将产品放在另一个页面上。如果我转到该页面 - prod-json.cfm?brand_id=115,它将正确加载所有信息。问题是我需要它显示在照片页面上,当用户选择特定品牌时,下面是我用来调用产品页面的代码:
<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({
type: "POST",
url: "prod-json.cfm",
data: {'brand_id': $("##brand_id").val()},
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>
如果我用选定的特定品牌刷新页面,那么它将显示产品,但如果我选择另一个品牌,则它不会加载任何内容,请有人帮我解决这个问题。
提前致谢。
【问题讨论】:
-
您在选择第二个品牌时是否从 AJAX 调用中得到任何结果?您的浏览器控制台中有任何内容吗? JavaScript 中的 ## 是因为 ColdFusion 正在呈现此脚本吗?
-
是的##是因为它的coldfusion,当我选择了另一个品牌时没有反应,它只显示产品如果我选择品牌选择框然后重新加载页面,那就是唯一有效的时候。
-
你能在 JSFiddle 上发布一些东西吗?当您说没有响应时,这是否意味着它没有发出请求,或者 ColdFusion 没有返回任何内容。
-
如果我在 google chrome 中对其进行测试,它不会在控制台中说明有关该功能的任何内容,它只是说明了我在页面上拥有的另一个插件的一些内容。基本上必须发生的是,一旦用户选择了品牌,则必须将品牌 id 传递给 prod-json.cfm,然后根据已选择的 id 生成结果。在未选择品牌并且我选择某些东西时,在初始页面加载时,什么都没有发生,我希望这是有道理的,如果我把它放在网上而不是 jsfiddle,那会更好吗?
-
这听起来像是一个 JavaScript 问题,所以 jsFiddle 会很棒。
标签: jquery json coldfusion