V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
konakona
V2EX  ›  问与答

jquery 的 ajax 执行顺序问题

  •  
  •   konakona · Sep 12, 2014 · 4209 views
    This topic created in 4256 days ago, the information mentioned may be changed or developed.
    比如有一个按钮叫“点我“,点击后执行refresh(),这个方法里还执行了一个getSid()的方法。

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

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


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

    =。。=
    14 replies    2014-09-13 11:21:38 +08:00
    Saaee
        1
    Saaee  
       Sep 12, 2014
    ajax是非阻塞的
    Y2zz
        2
    Y2zz  
       Sep 12, 2014
    异步请求的话没顺序可言,建议用$.ajax 不要用 $.get、$.post之类的简写
    konakona
        3
    konakona  
    OP
       Sep 12, 2014
    @Y2zz
    @Saaee
    假如一次要请求多个ajax,如何保证顺序?
    cxe2v
        4
    cxe2v  
       Sep 12, 2014
    $.ajax({
    async:"false"
    })
    这样就会等这个ajax请求执行完了再执行后面的操作
    cxe2v
        5
    cxe2v  
       Sep 12, 2014
    @cxe2v 哦,那个false不要加引号
    icanfork
        6
    icanfork  
       Sep 12, 2014
    这样写真的好吗?写个 callback 吧
    getSid( function(){
    //do something
    })
    Coda
        7
    Coda  
       Sep 12, 2014 via iPad
    lz我歪个楼,求编辑器配色~
    robbielj
        8
    robbielj  
       Sep 12, 2014
    你这种要写callback,上面有人说了
    kmvan
        9
    kmvan  
       Sep 12, 2014
    借个楼问个问题:
    $.ajax({
    //...some params
    }).done().fail().always();

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

    aysnc: false,用了你就会想死。。。
    jsonline
        14
    jsonline  
       Sep 13, 2014 via Android
    @andy12530 有些其他语言转前端的人总是想着怎么把JS的异步去掉,违背Web的天性。
    我只能呵呵,随他们折腾吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1100 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 18:21 · PVG 02:21 · LAX 11:21 · JFK 14:21
    ♥ Do have faith in what you're doing.