【问题标题】:using modal popup for php redirect使用模式弹出窗口进行 php 重定向
【发布时间】:2013-05-07 12:45:32
【问题描述】:

我有一个 php 邮件表单(工作正常),当前重定向到感谢页面。我正在改造网站并希望(而不是重定向到另一个页面)(在成功提交后)出现一个模式弹出窗口并说谢谢。我还需要清除表单,因为用户将停留在当前页面上。我已经搜索(在 stackoverflow 和网络搜索上)寻找解决方案。我发现了一些“想法”,但没有任何效果。我目前正在网站上的其他内容上使用模式弹出窗口(自改版以来),并且通常了解它们的工作原理。我对php也有基本的了解。我在想是否可能(?)在标题中使用某种类型的 javascript 来调用模式弹出窗口。我也看到了它需要 AJAX 的想法。

任何帮助将不胜感激。

这是我的表单html:

<p class="formrequired">Required fields are marked with an asterisk(*)</p>
<form action="form.php" method="post">
    <ol class="forms">
    <li><label for="first_name">*First Name</label><input type="text" name="first_name"/></li>
    <li><label for="last_name">Last Name</label><input type="text" name="last_name"/></li>
    <li><label for="email">*Email</label><input type="text" name="email"/></li>
    <li><label for="comment">*Message</label><textarea name="comment"cols="45" rows="5"></textarea></li>
    <li><input type="submit" value="Submit" class="submit"/> 
    </ol>
</form>

和我的 php:

<?php

$myemail  = "person@email.com";

$first_name = check_input($_POST['first_name'], "Please enter your first name");
$last_name  = check_input($_POST['last_name']);
$email      = check_input($_POST['email']);
$comment    = check_input($_POST['comment'], "Please enter your message");


if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
    show_error("E-mail address is not a valid email address");
}

$subject="New form submitted on Napoleonville Fire";

$message = "Hello Jordy!

Your contact form has been submitted by:

First Name: $first_name
Last Name: $last_name

E-mail: $email

They left the following message:

$comment

End of message.
";

mail($myemail, $subject, $message);

header('Location: thankyou.html');
exit();


function check_input($data, $problem='')
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    if ($problem && strlen($data) == 0)
    {
        show_error($problem);
    }
    return $data;
}

function show_error($myError)
{
?>
    <html>
    <body>

    <b>Please correct the following error:</b><br />
    <?php echo $myError; ?>

    </body>
    </html>
<?php
exit();
}


?>

再次感谢您的帮助。

如果可以解决的话,我会有一个“第 2 部分”。

【问题讨论】:

    标签: php jquery modal-dialog


    【解决方案1】:

    我能想到的两个流程

    非 AJAX

    像现在一样将表单提交到服务器。然后在重新渲染成功页面时,渲染带有模态显示的页面。提供某种关闭按钮,设置在其上不显示或将其从 DOM 中完全删除。在这种方法中,您可以使用 PHP 处理呈现空表单。这是更传统的范式。

    AJAX

    为此,向表单提交添加一个事件处理程序。通过 AJAX 提交表单,但不要立即清除表单字段。等待服务器的响应。例如,如果服务器在表单提交中发现验证错误,您将必须更新表单以反映此错误。如果服务器返回成功响应,请使用 Javascript 清除表单字段并显示模式。

    【讨论】:

    • 希望这有点帮助,但很笼统!
    • 我(至少认为)我理解您以非 ajax 方式谈论的内容。成功提交后(在php上使用标题)显示相同的页面但在模式弹出框中添加?这也将清除表单,因为我只是重新显示原始页面。使用 ajax 方式,我不确定如何实现这一点。我正在考虑(bc of)我的问题的第 2 部分,我可能需要使用 ajax 方式。
    • 是的,我想说如果您对 AJAX 不是很熟悉,第一种方法会更容易掌握和实施。如果表单验证成功并且邮件已发送,您只需在页面重新加载时显示模态框,并提供一个简单的 JS 点击处理程序,以便它们可以在模态框上有一个关闭按钮。
    • 好吧,我想我正在理解非 ajax 方式(至少希望大声笑)我的第 2 部分(这就是我认为 ajax 的原因)是为了以防数据出现错误输入)是有一个模式弹出窗口来说明错误,而不是当前通过 php 页面显示它。我花了无数个小时更深入地研究 ajax 和 jquery,我想我现在已经“流”下来了,只是对编码本身并不完全确定......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2023-03-31
    • 2019-03-18
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多