所以,你外面的变量赋值,还没有等请求值返回,就已经执行了。
你只需要在getJSON请求之前,设置同步请求就行了:$.ajaxSettings.async = false
要回答这问题,首先要理解ajax是异步访问的,所谓异步,类似于多线程,js解释器执行到ajax的时候,并不会等待返回结果以及回调函数都执行完了过后才执行下一条语句(在这里就是alert语句),而是在调用ajax过后就直接执行alert(obj)了,在执行alert的时候,ajax的回调函数还没执行,因为网络传输需要时间,执行结果还没返回。解决方法是不用$.getJSON,而用$.ajax,设置async=false,改异步为同步,这样代码就会顺序执行了。或者把alert写到ajax回调函数中(也是使用ajax的时候常用的方式,推荐)。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)