關於ajax中執行 window.location.href不跳轉問題


 $.ajax({
                    url: "/Ajax/System/ajaxcheshi.ashx",
                    dataType:'text',   //  datatype: "json", 
                    type: "post",
                    data:user,//,quenceAge=quenceAge,ctertime=ctertime,tquencether=tquencether,Status=Status}
                    success: function (data) {
                        if (data == "1") {
                            alert("保存成功");
                            // window.location.href = "ModelDatasequence.aspx";
                            // location.href = "ModelDatasequence.aspx";
                            // window.location.href="http://www.hao123.com";
                            //   $this.redirect("Management/ModelDatasequence.aspx");
                            setTimeout("javascript:location.href='ModelDatasequence.aspx'", 0);
                        } else {
                            alert("保存失敗");
                        }

                    })

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

//原因: 因為有提交了一次表單。你的ajax是同步的,所以提交表單動作被掛起直到ajax完畢后(此時執行請求過一次服務器),表單會提交,這樣就會執行頁面指定的action的地址, 而ajax回調success href的鏈接賦值不成功(這個問題有興趣的去研究)
 
參考http://www.cnblogs.com/horsen/p/6933038.html
注意起來一個情況:ajax+submit+同步----就是你用ajax請求服務器,而且用的是同步的方式,並且你是通過點擊了type類型為submit的按鈕來觸發這個ajax。
 
這個時候,首先你點擊了submit,它會提交表單,但是由於你用了ajax的同步操作,submit的提交被阻塞,ajax先執行,這個時候,如果你在ajax的回調函數(如:success)中寫了document.location.href='xxx.html',它是執行了,的確是去執行了跳轉的,於是ajax完成了,那接下來就要把剛才的submit提交的請求完成。於是呢又要從xxx.html跳回到剛才那個頁面(無論你submit有沒有提交具體的數據,總之提交了之后如果后台沒有執行跳轉/重定向,它就要回到原來的頁面。)
 

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


免責聲明!

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



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