我写了一个脚本,在里面用一个select字段添加一个新的div容器。 select字段的数据之前加载了ajax请求。但由于某种原因,只有当我使用alert()输出内容时,这些字段才可见。
var o = '';
$.ajax({
type: 'post',
dataType: 'json',
url: webroot + 'items',
success: function(data) {
$.each(data, function(index, value) {
o += '<option value="' + index + '">' + value + '</option>';
});
}
});
var l = parseInt($('.items .item').length);
var h = '<div class="item"><span class="bold">Item ' + (l + 1) + '</span><select id="ItemName" name="data[Item][name]">' + o + '</select></div>';
我实际上不知道如何解决这个问题。你能救我吗?
答案 0 :(得分:5)
Ajax是异步的。将所有代码移动到成功函数中,它将起作用。它与alert一起使用的原因是因为警报允许一些时间来获得AJAX结果。
$.ajax({
type: 'post',
dataType: 'json',
url: webroot + 'items',
success: function(data) {
var o = '';
$.each(data, function(index, value) {
o += '<option value="' + index + '">' + value + '</option>';
});
var l = parseInt($('.items .item').length);
var h = '<div class="item"><span class="bold">Item ' + (l + 1) + '</span><select id="ItemName" name="data[Item][name]">' + o + '</select></div>';
}
});
除了将一些html加载到变量中之外,您的代码实际上并没有做任何事情。所以无论你用“h”做什么,都要在成功函数中做到。