关于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参数竟然如此神奇。