从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;
};
})
有人可以解释如何异步获取结果 感谢
答案 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
。
1}}默认情况下。
如果您需要同步请求,请将此选项设置为true
。
false
个请求和Cross-domain
请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。
如果您需要确保该方法始终显示最新数据,请使用dataType: "jsonp"
和cache:false
。另外,为了避免超时/错误,请使用async:false
/ success
/ error
回调选项。