0

下面是我的代码:

<script src="jquery-1.8.3.js" type="text/javascript">
</script>

<script type="text/javascript">

var obj=[]  ;
    function getData(){
        $.ajax({
            url:'jqueryJsonTest.php',
            type:'POST',
            dataType: 'json',
            cache: true,
            success:function(data){
            obj = data ; 
            alert ("alert 1: "+obj.length);
            }
        });
        }

$(document).ready(function() {
    getData();
    alert("alert 2: "+obj.length);
    alert("alert 3: "+obj.length);
});

</script>

为什么保存数据后的第一个结果是一个空数组?

4

1 回答 1

0

您正在进行一个立即返回的异步 AJAX 调用。它在success执行回调之前返回(您设置obj为返回的内容)。您应该做的是在处理程序中进行进一步处理success- 或者 - 使用选项使您的 ajax 调用同步async: false(不推荐)

尝试将回调处理程序传递给您的getData()函数。即类似的东西:

function getData(mycallback){
    $.ajax({
        url:'jqueryJsonTest.php',
        type:'POST',
        dataType: 'json',
        cache: true,
        success:function(data){
            mycallback(data);
        }
    });
}

$(document).ready(function() {
    getData(function(obj) {
        alert("alert 2: "+obj.length);
        alert("alert 3: "+obj.length);
    });
});
于 2013-01-05T16:24:18.770 回答