jquery异步和JSON数据

从javascript jquery和使用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; }; }) 

以下示例工作正常,并以数组forms给出结果,即[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; }; }) 

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

我会把它改成这个……

 $(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, }); }; }) 

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

   

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

默认情况下,所有请求都是asynchronously发送的。 默认为true

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

如果需要确保该方法始终显示最新数据,请使用cache:falseasync:false 。 还要避免超时/错误使用success / error / complete回调选项。