将数组保存到全局变量中的Ajax不能正常运行

时间:2017-03-31 21:53:48

标签: javascript php jquery ajax

尝试将从ajax检索到的数组保存到全局变量中,以便稍后可以使用它但不断出现未定义的错误

   <script>
    var items = [];

    function add(value){
        items.push(value);
    }

    $(document).ready( function() {
    $.ajax({
        type: 'POST',
        url: 'xxxx.php',
        dataType: 'json',
        cache: false,
        success: function(result) {
            for(i=0; i < result.length; i++){
                add(result[i]);
            }
        },
    });
    });

    document.write(items[1])

    </script>

2 个答案:

答案 0 :(得分:1)

这是一个异步AJAX调用。对add的调用将在执行document.write(items[1]);

之后的时间完成

所以这是正确的方法:

<script>
    var items = [];

    function add(value){
        items.push(value);
    }

$(document).ready( function() {
    $.ajax({
        type: 'POST',
        url: 'xxxx.php',
        dataType: 'json',
        cache: false,
        success: function(result) {
            for(i=0; i < result.length; i++){
                add(result[i]);
            }
            document.write(items[1])
        },
    });
});
</script>

这样,执行结果函数时将执行使用结果的函数。

这样想:你说:这是柠檬篮子。然后你让别人去某个地方去吃柠檬,在他回来之前,你试图计算柠檬。知道了吗?

答案 1 :(得分:0)

在ajax请求完成后,您可以使用ajaxstop来调用该方法。将以下功能放在文档就绪中:

 $(document).ajaxStop(function () {
     document.write(items[1]);      
 });

上述解决方案有效,但这是我在等待多个ajax函数完成时使用的另一个选项。这将在您每次完成ajax请求时调用,但如果需要,可以限制一个调用。