jquery异步和JSON数据

时间:2011-04-13 04:36:30

标签: jquery json asynchronous

javascript jquery and using eval开始,我仍然无法获得jquery异步读取数据。

 data1=[1,2,3,4]

注意:我在下面的示例中包含了async:true只是为了显示差异

下面的示例返回“null”

$(document).ready(function(){

var myArray=[];
myArray=getValues();
alert(myArray);
        function getValues(){
        var result=null;
             $.ajax({
                url: 'data1.html',
                type: 'get',
                dataType: 'json',
                cache: false,
                success: function(data) {result = data;},
                async:true,
                });
            return result;
        };
})

以及下面的示例正常工作,并以数组形式给出结果,即[1,2,3,4]

$(document).ready(function(){

var myArray=[];
myArray=getValues();
alert(myArray);
        function getValues(){
        var result=null;
             $.ajax({
                url: 'data1.html',
                type: 'get',
                dataType: 'json',
                cache: false,
                success: function(data) {result = data;},
                async:false,
                });
            return result;
        };
 })

有人可以解释如何异步获取结果 感谢

4 个答案:

答案 0 :(得分:8)

我会把它改成这个......

$(document).ready(function(){

     function postProcessing(data) {
       var myArray = data;
       alert(myArray);
     }


    getValues();

        function getValues(){
             $.ajax({
                url: 'data1.html',
                type: 'get',
                dataType: 'json',
                cache: false,
                success: postProcessing,
                async:true,
                });
        };
})

答案 1 :(得分:3)

这应该有效,因为它在我的工作,但我建议你不要这样做。

<script src="jquery.js"></script>
<script>
$(document).ready(function(){

    /*don't do your stuff here*/
        /*do inside success*/

    function getValues(){
        var result=null;
        $.ajax({
            url: 'phpinfo.php',
            type: 'get',
            dataType: 'json',
            cache: false,
            success: function(data) { if(data != null){ alert(data); } },
        });
        return result;
    };

})
</script>

答案 2 :(得分:0)

第一部分,结果以异步方式返回给myArray,但在此之前,alert函数已经执行,因为ajax是异步发生的。因此,如果您在“返回结果”之后立即发出提醒,您应该会看到结果。

答案 3 :(得分:0)

默认情况下,所有请求都会发送asynchronously

如果您需要同步请求,请将此选项设置为truefalse个请求和Cross-domain请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。

如果您需要确保该方法始终显示最新数据,请使用dataType: "jsonp"cache:false。另外,为了避免超时/错误,请使用async:false / success / error回调选项。