【发布时间】:2025-12-13 21:50:01
【问题描述】:
我是 AJAX 新手,正在将一些常规 HTML 表单转换为 AJAX。
我现有的实现如下 - 表单(在 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,我在此 SO 链接 How to show loading gif when request goes Ajax 上使用 @SSL 的解决方案 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 后端应该可以做出不同的响应。
-
不确定为什么这个问题被否决?如果投反对票的人发表评论,我将不胜感激,这样我就知道我做错了什么。顺便说一句,我确实在 SO 上找到了一些关于没有 JS 的 AJAX 回退的问题,但没有特定于重定向回原始页面的问题。
-
@gpgekko 感谢您的快速回复。您的建议与 quoo 建议的相同吗?或不同的东西
标签: javascript php ajax