1
ttph1oc 2014-08-27 16:40:41 +08:00
AJAX是异步的,alert的时候请求还没完成。
|
2
kokdemo 2014-08-27 16:57:01 +08:00
你可以认为ajax的代码实际上是在最后执行的,所以有一些需要在ajax完成才加载的函数最好卸载ajax的success和done里面
|
3
kamal 2014-08-27 17:29:32 +08:00
success 不用匿名函数,可能更容易理解。
写一个单独的函数,你想一下,没有调用,就不会执行。 再想一下什么时候调用,就明白了。 |
4
cuixiaolu 2014-08-27 17:40:00 +08:00 1
同步异步的问题,如果在请求的时候,增加上参数 async :true是异步,false是同步
$.ajax({ type: "get", url: "http://m.mvbox.cn/sod?action=28¶meter={'AVID':" + 594941 + "}", dataType: "jsonp", jsonp: "callback", async: false success: function(data) { p.urls = data.spaceav.userID; console.log(p.urls );//可以输出结果 } }) console.log(p.urls);//可以输出了~ |
5
Tankpt 2014-08-27 18:09:10 +08:00
楼上的说的很明白了。其实呢。就是这个请求什么时候完成你控制不住的,然后你那里直接alert的时候,数据都还没回来,
|
6
format 2014-08-27 18:26:00 +08:00
javascript里的event loop造成的。
解决方法: 1. alert放到success回调里 或 2. ajax请求加个async: false 参数,表示这个请求是同步 |
7
lwbjing 2014-08-27 21:45:47 +08:00
请求在生成的时候,就执行输出了,当然弹不出你要的。
|