慕田峪4524236
2019-07-30 17:39:20
不推薦使用jQuery.ajax()方法的異步選項,現(xiàn)在怎么辦?在jQuery 1.8中,使用async:false在jQuery.ajax()被棄用。但是,在后臺正在進行的AJAX通信中,您在“加載屏幕”中看到了多少個網(wǎng)頁?我可能已經(jīng)看過數(shù)千個。我的情況是我正在編寫一個需要加載語言文件的移動應(yīng)用程序。在開始時,我加載語言文件,然后從語言文件中檢索按鈕和其他GUI元素的文本。這對我來說真的很糟糕。因為如果缺少語言文件,則不應(yīng)出現(xiàn)GUI。那么我該如何解決呢?把我所有的代碼都放在success回調(diào)中?這對我來說似乎不是一個好的編碼實踐。我可以用另一種方式解決嗎?
3 回答

拉莫斯之舞
TA貢獻1820條經(jīng)驗 獲得超10個贊
解決方案是手動添加覆蓋以防止用戶與界面交互,然后在完成AJAX查詢后將其刪除。
$(function() { show_overlay(); $.ajax({ // Query to server }).done(function() { // Verify good data // Do stuff remove_overlay(); });});

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
我敢打賭,在等待AJAX調(diào)用時,這1000個頁面中的許多頁面實際上并沒有阻止UI。相反,他們可能在調(diào)用時使用等待屏幕模糊UI,然后在響應(yīng)處理程序上刪除它。
隱藏UI的方法有很多種(你甚至可以使用設(shè)置為Modal的jQuery UI對話框,沒有轉(zhuǎn)義或關(guān)閉按鈕),所以我會把這個決定留給你。但代碼的布局將是這樣的:
var someFunction = function () { // any pre-conditions to the logic // obscure the UI here $.ajax({ url: 'ajax/test.html', success: function(data) { // handle the response // show the UI again }, error: function(data) { // handle the response // show the UI again } }); }
我確信有多種方法可以實現(xiàn)這種事件順序,但這是一般的想法。阻止UI從來就不是真正的意圖,我認為jQuery 包含該功能比刪除它更困難。它意味著異步。
- 3 回答
- 0 關(guān)注
- 896 瀏覽
添加回答
舉報
0/150
提交
取消