要回答这问题,首先要理解ajax是异步访问的,所谓异步,类似于多线程,js解释器执行到ajax的时候,并不会等待返回结果以及回调函数都执行完了过后才执行下一条语句(在这里就是alert语句),而是在调用ajax过后就直接执行alert(obj)了,在执行alert的时候,ajax的回调函数还没执行,因为网络传输需要时间,执行结果还没返回。解决方法是不用$.getJSON,而用$.ajax,设置async=false,改异步为同步,这样代码就会顺序执行了。或者把alert写到ajax回调函数中(也是使用ajax的时候常用的方式,推荐)。
可以return
function getAjax(){
var obj = "";
$.getJSON("ajax.php",{a:a,b:b},function(json){
obj = json;
alert(json);
})
先看看这样出来没
你好!
有个方法,可以试试:
将json写入隐藏域,外面想用时,读出来,包装一下。
设置为同步,外面就能获取到了