簡體   English   中英

當按下后退按鈕時,有jQuery觸發Ajax請求

[英]Have jQuery fire Ajax request when when back button is pressed

我有80+動態生成的輸入框,當用戶提交表單到另一個PHP頁面和一個輸入包含一個值,該值不是數值頁面時,它會使用它們發送回輸入頁面: <?php header("Location: javascript:history.back()"); ?> <?php header("Location: javascript:history.back()"); ?> ,同時將錯誤記錄在會話變量中。 我使用javascript:history.back()的原因是,即使按下后退按鈕,它也會存儲表單中的值。 但是因為它正在緩存頁面,所以我無法在同一.php腳本中輸出錯誤,因此我添加了一個元素和一些Ajax代碼。 Ajax代碼檢索另一個名為error.php的文件,其中包含:

<?php
header("Cache-Control: no-cache"); 
session_start();
if(isset($_SESSION['error'])) 
{
    echo $_SESSION['error'];
    unset($_SESSION['error']);
}
?>

當頁面被單獨加載時,將檢索此內容,但使用history.back()時,則不會檢索該內容,似乎未觸發以下內容:

<script type="text/JavaScript"> 
 $(document).ready(function(){ 
     $("#error p").load("error.php"); 
 });
 </script>

有任何想法嗎?

謝謝,
賈斯汀

通常建議不要使用header("Location: javascript:history.back()")

使用絕對路徑,即

header('Location: /forms/input.php');

您可以避免完全提交表單並通過AJAX調用發送數據-服務器可以驗證數據並發送回“成功”或驗證錯誤列表。

如果成功,請轉到下一個URL(可能在成功消息旁邊指定)

如果失敗,請修改當前頁面以指示問題所在。 這樣可以避免您不得不重新創建整個表單(因為您永遠不會離開頁面),而且還可以進行可靠的服務器端驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM