我是AJAX新手,並且正在將某些常規HTML表單轉換爲AJAX。AJAX表單提交沒有Javascript後退
我現有的實現如下 - form(在page1.php上)發佈到page2.php,它對發佈數據做了一些驗證,如果缺少某些內容,則重定向到錯誤頁面。如果輸入正常,它會包含page3.php,它將處理請求並重定向回page1.php。
PHP/page1.php中
<form method="post" action="/php/page2.php" >
<input type="text" name="input1" placeholder="Howdy..." />
<input type="text" name="input2" placeholder="Howdy..." />
<input type="submit" value="Submit" />
</form>
PHP /使page2.php
<?php
// perform some validation on inputs
if (empty($_POST['input1']))
{
$location ='Location: /php/error.php';
header($location);
exit;
}
// Inputs are fine
include('/php/page3.php');
?>
page3.php
<?php
// do some form processing
// redirect back to page1.php
$location = 'Location: /php/page1.php";
header($location);
exit;
?>
要轉換到AJAX,我使用@ SSL的解決方案上此SO鏈接How to show loading gif when request goes Ajax http://jsfiddle.net/clickthelink/Uwcuz/1/
來自驗證和成功頁面的錯誤都通過回調函數顯示在page1.php中。
PHP /使page2.php
<?php
// perform some validation on inputs
if (empty($_POST['input1']))
{
// Echo erorr code isntead of redirect
echo "Please enter input1";
return;
//$location ='Location: /php/error.php';
//header($location);
//exit;
}
// Inputs are fine
include('/php/page3.php');
?>
page3.php
<?php
// do some form processing
// Echo success instead of redirect
echo "SUCCESS";
// redirect back to page1.php
//$location = 'Location: /php/page1.php";
//header($location);
//exit;
?>
這部分工作的罰款。
我的問題(最後)是我如何處理禁用JavaScript的用戶?我知道表單會被正確提交,但如果出現錯誤或成功,我不會得到重定向。我想在這種情況下也保留header()重定向類型的功能。這可能嗎?我將不勝感激。
您可以很容易地識別請求是否是AJAX調用,導致它設置HTTP標頭。因此,如果沒有js的表單提交,應該可以讓PHP後端以不同的方式響應。 – gpgekko
不確定爲什麼這個問題是downvoted?如果這個人放棄了評論,我會很感激,所以我知道我做錯了什麼。順便說一下,我確實發現了一些有關AJ關於AJAX回退的問題,沒有JS,但沒有具體的重新回到原始頁面。 – user3573508
@gpgekko感謝您的快速響應。你是否建議與quoo建議的相同?或不同的東西 – user3573508