以下是我的代码:
<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>
为什么保存数据后的第一个结果为空数组?
答案 0 :(得分:0)
您正在进行异步AJAX调用,它会立即返回。它在执行success
回调之前返回(您将obj
设置为返回的是什么)。你应该做的是在success
处理程序中进行进一步处理 - 或者 - 使用async: false
选项使你的ajax调用同步(不推荐)
尝试将回调处理程序传递给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);
});
});