1.預設ajax請求,相同的url會快取。
var rand = math.random(); //為了演示,這裡直接用了乙個隨機數,實際開發中最好以當前時間為種子的隨機數,防止快取 winjs.xhr() .done(function complete(result) , function error(result) );
2.ajax的非同步。
var userinfo = null; function showuser() function getuserinfobyajax(userid) ) .done(function complete(result) , function error(result) ); } function showuserinfo()
自己一股勁的在除錯,但是介面一直不顯示username和hometown,斷點顯示userinfo為null。但是在getuserinfobyajax()方法體裡面userinfo確實取得了伺服器返回的資料。因為前端和後台**都是自己寫,所以有時真不確定是哪頭的**出了問題,所以有時單元測試特別的重要。這裡又要提到web api,等專案結束之後把後台的**重構為web api出來。
其實這個問題新手很容易範,因為getuserinfobyajax(userid);在showuserinfo(); 之前,所以肯定是先獲得了userinfo,但是為什麼在showuserinfo()裡面的userinfo為null。我在寫**時,把ajax非同步請求的概念忘了,winjs.xhr()傳送請求之後不能馬上獲得資料,這就是非同步。所以在**執行到showuserinfo()內部時,可能userinfo還沒有重新賦值,所以還是null。旁邊的同事幫我看了一眼就發現我的錯誤做法。
在獲得ajax資料之後要執行的事情全部要放到ajax成功方法體內,**如下:
function getuserinfobyajax(userid) ) .done(function complete(result) , function error(result) ); }
程式執行正常。從以上來看,我們在web開發過程中,很多問題都是由於我們對基礎概念掌握的不好,或者忽略了最基本的概念,等到程式**一多,問題就顯得非常多,並且自己經常處在「不識廬山真面目,只緣身在此山中」。一直在自己寫的錯誤**裡面打轉。 Windows8非同步程式設計的注意事項
1.預設ajax請求,相同的url會快取。var rand math.random 為了演示,這裡直接用了乙個隨機數,實際開發中最好以當前時間為種子的隨機數,防止快取 winjs.xhr done function complete result function error result 2.aj...
Windows8非同步程式設計的注意事項
1.ajax請求,相同的url會快取。var rand math.random 為了演示,這裡直接用了乙個隨機數,實際開發中最好以當前時間為種子的隨機數,防止快取 winjs.xhr done function complete result function error result 2.ajax...
Windows8非同步程式設計的注意事項
1.預設ajax請求,相同的url會快取。var rand math.random 為了演示,這裡直接用了乙個隨機數,實際開發中最好以當前時間為種子的隨機數,防止快取 winjs.xhr done function complete result function error result 2.aj...