jquery 的 ajax 执行顺序问题

2014-09-12 20:50:32 +08:00
 konakona
比如有一个按钮叫“点我“,点击后执行refresh(),这个方法里还执行了一个getSid()的方法。

但是执行顺序非常诡异,以至于$("#server_id")的值在refresh()初次执行时(第一次点按钮嘛),总是为0(该hidden input的默认值)。

alert顺序图(上面有红色的1、2、3):


因此,在控制台中单独输入"getSid()",alert的顺序也是很奇怪。先alert“函数执行完成”,才alert“ajax请求完毕”。

=。。=
3467 次点击
所在节点    问与答
14 条回复
Saaee
2014-09-12 20:51:46 +08:00
ajax是非阻塞的
Y2zz
2014-09-12 20:57:24 +08:00
异步请求的话没顺序可言,建议用$.ajax 不要用 $.get、$.post之类的简写
konakona
2014-09-12 21:02:50 +08:00
@Y2zz
@Saaee
假如一次要请求多个ajax,如何保证顺序?
cxe2v
2014-09-12 21:09:39 +08:00
$.ajax({
async:"false"
})
这样就会等这个ajax请求执行完了再执行后面的操作
cxe2v
2014-09-12 21:11:33 +08:00
@cxe2v 哦,那个false不要加引号
belin520
2014-09-12 21:13:16 +08:00
这样写真的好吗?写个 callback 吧
getSid( function(){
//do something
})
Coda
2014-09-12 21:15:16 +08:00
lz我歪个楼,求编辑器配色~
robbielj
2014-09-12 21:22:26 +08:00
你这种要写callback,上面有人说了
kmvan
2014-09-12 21:47:32 +08:00
借个楼问个问题:
$.ajax({
//...some params
}).done().fail().always();

这种写法,大家都是这样吗?手册上貌似这种写法是比较适合jq2.x的
emric
2014-09-12 22:15:34 +08:00
@kmvan 没有记错的话是 1.5 之后加入的.
promise 算是比较好的回调方法吧.. 似乎已经纳入 es6 标准.
jarontai
2014-09-12 22:23:33 +08:00
管理多个ajax请求:
http://jarontai.github.io/blog/2014/08/22/manage-multiple-ajax/
----------------------
顺便也问一下编辑器配色主题~
konakona
2014-09-13 00:16:36 +08:00
@kmvan 这个写法很好,赞一个!就这样了~
andy12530
2014-09-13 00:19:59 +08:00
@cxe2v
不要教坏新人!!!

aysnc: false,用了你就会想死。。。
jsonline
2014-09-13 11:21:38 +08:00
@andy12530 有些其他语言转前端的人总是想着怎么把JS的异步去掉,违背Web的天性。
我只能呵呵,随他们折腾吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/133143

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX