我有一个组合选择和一个AJAX调用来加载数据并填充它。
<select id="order_products"><option value="0">Loading data...</option></select>
var kmx = jQuery.noConflict();
function loadProducts() {
var myProductSelect = kmx('#order_products');
myProductSelect.empty();
myProductSelect.append("<option value='0'>Loading data...</option>");
kmx.ajax({
type: "POST",
url: baseurl,
data: urlquery_ajax + "getOrderProductsInJsonFormatAjax&order_id=" + order_id + '¬_linked=1',
success: function(data){
data = kmx.parseJSON(data);
populateCombo(myProductSelect, data, 'Select Product');
},
failure: function(msg){
msg = kmx.trim(msg);
alert('Error: ' + msg.responseText);
}
});
}
/**
* Populate the combo
*/
function populateCombo(myComboObj, myData, myText) {
myComboObj.empty();
myComboObj.append("<option value='0'>" + myText + "</option>");
kmx.each(myData.rows, function(index,item) {
myComboObj.append('<option value="' + item.id + '"' + '>' + item.number + '</option>');
});
}
没什么特别的,但是当我运行代码时出现问题:页面变白了!我甚至看不到页面的代码来源!
但是如果我添加变量:
var myProductSelect = kmx('#order_products');
进入success方法,在调用函数进行填充之前,它可以工作:
success: function(data){
data = kmx.parseJSON(data);
var myProductSelect = kmx('#order_products'); // <<<<<-----
populateCombo(myProductSelect, data, 'Select Product');
},
所以,我想了解问题是什么?我读了关于AJAX的变量作用域,闭包和异步调用的帖子,但我仍然不理解我的问题。