2017-02-20 58 views
1

所以我有一個提交按鈕,它將數據更新到數據庫,然後應該返回到上一頁。我的問題是當用戶點擊任何其他按鈕,然後點擊提交按鈕...它保持在同一頁面上。我怎樣才能使它工作?所以它實際上去diff頁面的前一頁。PHP/JS返回上一頁無法正常工作

<script type="text/javascript"> 
    function goBack() { 
    setTimeout("history.go(-1);", 5); 
    } 
    </script> 

<input type="submit" value="submit" name="submit" id="button" onclick="goBack()"> 
+0

它不是用戶想做的主要方式。我的話讓你的用戶體驗像其他Web應用程序一樣。 –

回答

2

如果你能夠修改代碼來實現這一點,你可以嘗試使用,而不是輸入的按鈕:

<script type="text/javascript"> 
 
    function goBack() { 
 
    setTimeout("history.go(-1);", 5); 
 
    } 
 
    </script> 
 

 
<button type="button" onclick="goBack()"> 
 
Go Back 
 
</button> 
 

 
<button type="button"> 
 
Test Button 
 
</button>

+0

這將完成與我現在所做的一樣的事情。 – VHDLprog

+0

我在Chrome上,當我運行代碼片段時,我可以按下測試按鈕一百萬次,當我單擊返回按鈕時返回到上一頁。 –

-1

你可能會被添加到該網址與其他按鈕的查詢字符串,在這種情況下,您的上一個網址是不是你期望的。 例如,您的網址是helloworld.com,並且某個按鈕正在向網址添加#some,導致helloworld.com#some ...在這種情況下,以前的網址將是helloworld.com,而沒有#some ...如果這是你得到的,將不得不照顧這一點。 我想你可以保存你想要回到變量中的url,並從那裏重定向。

---編輯---

在基地最新的意見,我會建議你使用AJAX做到這一點,因爲我認爲你正在試圖做somethig在錯誤的道路。 從一開始,你所得到的就是預期的東西。 submit按鈕對錶單的url執行一個請求(如果沒有定義的話,它與你所在的URL相同)。所以你不在同一頁面,而是重新加載頁面。在這種情況下,以前的URL是相同的(或者它似乎是相同的)。 隨着AJAX在最基本的形式,你可以做這樣的事情:

<script> 
var submitElement = document.querySelector('input[type="submit"]'); 

submitElement.addEventListener('click', function(e) { 
    e.preventDefault(); 
    var ajax = new XMLHttpRequest(); 

    ajax.open("POST", url, true); 
    ajax.setRequestHeader("Content-type", "application/x-www-form- urlencoded"); 
    ajax.send(params); 
    ajax.onreadystatechange = function() { 
     if(ajax.readyState == 4 && ajax.status == 200){ 
      setTimeout(function() { 
       window.history.back(); 
      }, 5); 
     } 
    } 
}); 
</script> 

我只向你展示如何從JS執行Ajax調用...從PHP端,你必須要表單參數將它​​們保存在數據庫中,但與您現在正在做的幾乎相同,我想你知道該怎麼做。 希望能夠澄清您的問題和解決方案。

+0

我如何將url保存在一個變量中,如果每次點擊一個按鈕,它都會刷新頁面....這意味着我的變量將始終被更新。 – VHDLprog

+0

因爲你可以用PHP定義url ...例如,你可以定義一個JS變量並用php填充它(var someVar = <?php echo $ returnUrl?>)但是想到更多,我明白了你不是阻止提交事件...我會建議添加事件監聽器,而不是在「onclink」中有回調...例如: –

+0

document.querySelector('input [type =「sumbit」]')。 addEventListener('click',function(e){e.preventDefault(); window.history.back();})...但在這種情況下,您將需要使用AJAX執行操作,而不是生成新的請求。 –