关于javascript:数据仅在提醒后可用

Data available only after alert

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
jQuery: Return data after ajax call success

我写了一个脚本,在里面用一个select字段添加一个新的div容器。 select字段的数据之前加载了ajax请求。 但由于某种原因,只有当我使用alert()输出内容时,这些字段才可见。

1
2
3
4
5
6
7
8
9
10
11
12
13
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 = '<span class="bold">Item ' + (l + 1) + '</span><select id="ItemName" name="data[Item][name]">' + o + '</select>';

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


Ajax是异步的。 将所有代码移动到成功函数中,它将起作用。 它与alert一起使用的原因是因为警报允许一些时间来获得AJAX结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$.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 = '<span class="bold">Item ' + (l + 1) + '</span><select id="ItemName" name="data[Item][name]">' + o + '</select>';
    }
});

除了将一些html加载到变量中之外,您的代码实际上并没有做任何事情。 所以不管你用"h"做什么,都要在成功函数中做。