ajax return false/true對外層邏輯無影響
阿新 • • 發佈:2018-11-30
今天在寫前端互動的時候碰到一個比較奇怪的問題:在一個事件裡,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;
不是太深奧的問題,但是很細節,很容易出錯!