關於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("保存失敗");
                        }javascript

                    })html

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

java

//緣由: 由於有提交了一次表單。你的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頁面。ajax

相關文章
相關標籤/搜索