jquery
2015-10-18 112 views 0 likes 
0

我試圖實現這一點: php表單。 jquery formsubmit。提交表單時 - 用戶被重定向 代碼:表單提交後的又一重定向

$(document).ready(function() { 

    $('#submit').click(function(e){ 
    $("form").submit(); 
    window.location.href = '<?=$http_path?>/usr/checkout_invoice'; 
    e.preventDefault(); 
    return false; }); 

}); 

它要麼提交代碼(當redrect爲關閉)或重定向,但從來沒有做兩件事情的目的。

我在想什麼?

更新

還好。下面的好人建議使用AJAX。這裏是前述的解決方案(即工作)爲那些有興趣誰:

$(document).ready(function() { 

    $('#shipping_ok').bind('click touchstart', function(e){ 
     e.preventDefault(); 

     var city = $('#city').val(); 
     var province = $('#province').val(); 
     var zip = $('#zip').val(); 

     $.ajax({  
      type : 'POST', 
      url : '<?=$http_path?>/usr/ja.php', 
      data: {city : city,province : province,zip : zip}, 
      success : function(data){ 
       window.location.href = '<?=$http_path?>/usr/checkout_invoice'; 
      }, 
      error : function(XMLHttpRequest, textStatus, errorThrown) { 
       alert ("Error Occured"); 
      } 
     }); 
     return false; 
    }); 

}); 
</script> 
+4

表單提交是對錶單「action」屬性中指定的任何URL的請求,並且它會導致瀏覽器顯示該請求返回的任何響應。 (如果沒有指定動作,它將提交到當前頁面。)因此,這種行爲可能與您嘗試設置'location.href'的嘗試衝突,這是一種不同類型的頁面請求。 – nnnnnn

+0

行動是自我 但..看起來像你的建議是真的... 得重新工作與阿賈克斯然後(嗯..如果THAt將工作)... – Rossitten

+1

提交ajax並設置'location.href'從在你的ajax成功處理程序中。 – nnnnnn

回答

1

一些背景知識,爲什麼它不工作。

表單提交的回發到服務器時,他們將刷新頁面...(通常是相同的URL)

如JavaScript是債券的頁面,當你提交表單,向請求服務器作出響應將被返回。

此時它開始用新的響應頁面替換當前頁面。

新的響應頁面將不知道以前發生了什麼。

這將重新加載JavaScript,並有效地清空任何正在執行或將要在頁面上執行的javascript, 。

所以......

$("form").submit(); 
//page is reloaded from server... loosing content of any javascript. 

//anything below wont happen 
--------------------- 
//window.location.href = '<?=$http_path?>/usr/checkout_invoice'; 

JavaScript的窗口位置不會發生......作爲頁面被重新加載,通過一次重新加載, 它是不知道的頁面是一個JavaScript函數...所以重定向不會發生。

+0

謝謝你的隊友。很好的解釋,而且,對於谷歌來說,這很可能是很容易的(儘管我先試着在這裏找到答案,但沒有運氣)。 – Rossitten

+0

@Rossitten np我也很想,也去過那裏;-)都很好。 – Seabizkit

相關問題