数据仅在提醒后可用

时间:2012-03-12 01:42:35

标签: javascript jquery

  

可能重复:
  jQuery: Return data after ajax call success

我写了一个脚本,在里面用一个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>';

我实际上不知道如何解决这个问题。你能救我吗?

1 个答案:

答案 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”做什么,都要在成功函数中做到。