关于ajax中async参数的感悟

async,这个参数默认为true。

就是异步去处理信息。

当把它设置为false的时候,就是同步去处理数据了。

var current_lead_id = '<?php echo $current_lead_id;?>';
            var res = '';
            datas = "action=reset_current_phone&lead_id="+current_lead_id;
            $.ajax({
                type:'post',
                url: "send.php",
                data: datas,
                async:false,
                success: function(json) {
                     res = json.counts;
                },
                error: function(XMLHttpRequest, textStatus) {
                    alert("页面请求错误,请检查重试或联系管理员!\n" + textStatus);
                }
            });
            return res;

同步的时候,能够获取到res的值。异步的时候,就获取不到了。

第二点,同步的时候,只要这样写,就会执行reset_current_phone中的代码,最后才进行跳转。

function do_back(){
            var opt = '<?php echo $opt;?>';
            if(opt == 'auto'){
                // 跳转之前,处理一些事情
                res = reset_current_phone();
                javscript: window.history.go(-1);
            }else{
                javscript: window.history.go(-1);
            }
        }

而异步的时候,直接就跳转了,reset_current_phone中的ajax并没有执行完毕。

需要这样写才算执行完毕。

function do_back()
{
    var opt = '<?php echo $opt;?>';
    if (opt == 'auto')
    {
        // 跳转之前,处理一些事情
        res = reset_current_phone();
        if (res)
        {
            javscript : window.history.go(-1);
        }
    }
    else
    {
        javscript : window.history.go(-1);
    }
}

细节,原来如此重要。

一个async参数竟然如此神奇。

 

posted @ 2015-11-11 17:11  TBHacker  阅读(1347)  评论(0编辑  收藏  举报