1. 程式人生 > >ajax return false/true對外層邏輯無影響

ajax return false/true對外層邏輯無影響

今天在寫前端互動的時候碰到一個比較奇怪的問題:在一個事件裡,ajax請求校驗了一部分資料,根據介面返回的結果執行一些操作,但是發現在ajax的success程式碼塊return false,並不能中斷整個事件函式。
我先是嘗試了同步請求,也就是:

'async':false

但是並沒有用,還是進入了下面的程式碼塊,仔細看了下,return false/true是在ajax的success函式內部,並不能作用到外層,因為它是作用於success函式本身。於是我想了另一個辦法來解決,通過js作用域,在外部定義一個區域性變數來標識校驗的結果:

邏輯程式碼段1;
var flag = true;
$.ajax({
    'url':'/lvshi/clients/validate_submit.html',
    'async':false,
    'type':'post',
    'data':{'lawhelp_id': lawhelp_id},
    success:function(res){
        var data = JSON.parse(res);
        if (data.status == 0) {
            review_status(status_s);
            alert(data.msg);
            flag = false;
        }
    }
});
if(flag == false){
    return false;
}
邏輯程式碼段2;

不是太深奧的問題,但是很細節,很容易出錯!