ajax廣泛應用於非同步請求,對於大多數業務來說,這是十分方便的,但對於一些特殊的業務,ajax的非同步性會起到相反的作用。
例如在ajax請求成功後,後續的操作需要依賴ajax執行成功後的相應操作。
//宣告乙個表示狀態的全域性變數 status
var status = false;//
ajax
$.ajax(
});//
根據 status 的狀態 進行後續操作
function
()
}
以上**對於不是很清楚ajax執行原理的朋友來說,看似沒什麼毛病,但其實 status 的值在ajax 請求成功之後進行 if 判斷的時候值仍然為 false。
因為 ajax 有個 async 屬性,該屬性預設為 true,表示 ajax 非同步執行,而在進行 if 判斷的時候,ajax 的非同步執行還沒完成,因此 status 的值仍然是 false。
若要保證 status 的值是在 ajax 執行完成之後的最終值,有兩種辦法:
1、將 ajax 的 async 屬性設定為 false,表示 ajax 同步執行。
//宣告乙個表示狀態的全域性變數 status
var status = false;//
ajax
$.ajax(
});//
根據 status 的狀態 進行後續操作
function
()
}
但是這種方式在有些情況下並不好用。推薦第二種方式。
2、利用 jquery 的 when().done 函式 等待 ajax 執行結束之後再進行後續操作。
//宣告乙個表示狀態的全域性變數 status
var status = false;//
ajax
myajax =$.ajax(
});//
根據 status 的狀態 進行後續操作
function
()
}) ;
}
此時的 status 是在 ajax 執行完成後被重新賦值後的 status ,值為 true。
乙個小遊戲 讓你感受「如何等待成功」!
相信各位都玩過了開心網的三國殺。不知道有多少人會自己建房間?我就在不同的時間段做了測試。首先開個空房間,然後等待加入者到8個,滿人開始遊戲。這個等待過程非常的有趣,首先會有1 2個人嘗試性加入,也有可能等待一會兒,然後走了。然後會慢慢到4 5個人加入。這個時候,很大概率會突然100 的人又走了,剩下...
乙個小遊戲 讓你感受「如何等待成功」!
相信各位都玩過了開心網的三國殺。不知道有多少人會自己建房間?我就在不同的時間段做了測試。首先開個空房間,然後等待加入者到8個,滿人開始遊戲。這個等待過程非常的有趣,首先會有1 2個人嘗試性加入,也有可能等待一會兒,然後走了。然後會慢慢到4 5個人加入。這個時候,很大概率會突然100 的人又走了,剩下...
Ajax自動完成功能
近日學習了一下ajax,照做了幾個例子,感覺比較新奇。第乙個就是自動完成的功能即autocomplete,具體的例子可以在這裡看 http www.b2c battery.co.uk 在search框內輸入乙個產品型號,就可以看見效果了。這裡用到了乙個開源的 autoassist 有興趣的可以看一下...