最近在測試,發現有些效果不對,最后發現是post的執行順序問題,所以研究了下,寫了以下總結
1.post被請求多次,解決方法:
連接加入隨機數 rand=""+Math.random()
$.post("/Control/webControl.ashx?rand ="+Math.random(), { Method: "LoginIn", Parems: ps }, function (data, textStatus) { $("#divOver").css("visibility", "hidden"); switch (data) { case "1": window.location = '/default.aspx'; break; case "0": $("#tips").text("找不到該用戶"); u.focus(); changevcode(); errcount++; break; case "-1": $("#tips").text("用戶或密碼錯誤"); changevcode(); c.val("").focus(); errcount++; break; default: alert(data); } });
2.因為post默認為異步請求,可是有時候我們會發現,本來要求請求馬上出現,可是異步會導致后面突然再執行,這樣就出問題了
所以,我們需要加入
$.ajaxSetup({ async : false });
3.如果需要有些同步有些異步,那么我們應該使用最原始的ajax請求,然后把async設置為false
$.ajax({ type : "post", url : "register/RegisterState", data : "test=" + test, async : false, success : function(data){ data = eval("(" + data + ")"); aDataSet = data; } });