button實現ajax異步訪問后台成功后window.location.href導致頁面不跳轉問題


錯誤案例

前端代碼

//            開始抽獎
function startLunckDraw() {
var data = {batch:sessionStorage.batch,id:id}
$.ajax({
url:"/GZGA-CJ/act/startLuckDraw",
type:"post",
data:data,
dataType:"json",
success:function (data) {
if (data.code == 0){

window.location.href = "/GZGA-CJ/luncky.html";
}
},
error:function (msg) {

}
})
}
<button type="submit" class="btn btn-default wsh-btn" onclick="startLunckDraw();" id="luckyStart">開始抽獎</button>

解決方案 把你的 type="submit" 換成type="button"

//原因: 因為有提交了一次表單。你的ajax是同步的,所以提交表單動作被掛起直到ajax完畢后(此時執行請求過一次服務器),表單會提交,這樣就會執行頁面指定的接口, 而ajax回調success href的鏈接賦值不成功(這個問題有興趣的去研究)


參考http://www.cnblogs.com/horsen/p/6933038.html


即:ajax就是如你所想那樣執行了,也從A頁面跳到了B頁面,但是由於submit這種類型的特殊性,又讓B頁面跳回了A頁面,由於這個ajax執行完再執行submit請求的過程處理的很快,你會感到好像沒有效果,但是你仔細觀察,會發現這個過程頁面會刷新的,其實就是B頁面跳回到A頁面。
就好比sumit后頁面刷新了,但在舒心之前去了你要跳轉的頁面,然后ajax結束了,它又跳回來了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM