脚本执行后PHP取消重定向

时间:2016-07-25 15:08:07

标签: php html

我有一个简单的PHP脚本发送电子邮件,但当我点击提交按钮时,它会执行,然后转到脚本目录(例如:localhost / sendMail / test.php)。是否可以发布警告框,然后停留在页面上而不是转到脚本,然后重定向回到提交页面?

这是我的剧本。

<?php
$subject = 'Your website: Contact'; // Subject of your email
$to = 'myemail';  // Enter recipient's E-mail address
$emailTo = $_REQUEST['email'];

$headers = "MIME-Version: 1.1";
$headers .= "Content-type: text/html; charset=iso-8859-1";
$headers .= "From: " . $emailTo . "\r\n"; // Sender's E-mail
$headers .= "Return-Path:". $emailTo;

$body = 'You have received a new inquiry!' . "\n\n";
$body .= 'Name: ' . $_REQUEST['name'] . "\n";
$body .= 'Email: ' . $_REQUEST['email'] . "\n";
$body .= 'Phone: ' . $_REQUEST['phone'] . "\n\n";
$body .= 'Message: ' . $_REQUEST['message'];

if($_REQUEST['name'] != "" && $_REQUEST['email'] != "" && $_REQUEST['phone'] != "" && $_REQUEST['message'] != "")
{
    if (@mail($to, $subject, $body, $headers))
    {
        // Transfer the value 'sent' to ajax function for showing success message.
        echo 'sents';
    }
    else
    {
        // Transfer the value 'failed' to ajax function for showing error message.
        echo 'failed';
    }
}
else
{
    $message = "Invalid fields!";
    echo "<script type='text/javascript'>alert('$message');</script>";
    //header("Location: http://localhost/abtek/contact.html");
    exit;
}
?>

因此,当执行警报时,是否可以阻止其转到脚本,而是停留在页面上,直到字段全部有效提交?以及当他们被提交以再次显示警报并留在页面上而不是做一堆重定向时。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用ajax / jquery提交表单并停止重定向。见这里:Stackoverflow

答案 1 :(得分:0)

您可以使用jQuery,如下所示:

$('#my-submit').on('click', function(e){
    e.preventDefault(); // prevents regular form submission
    $.ajax({
        url: 'localhost/sendMail/test.php',
        data: $('form').serialize(),
        success: function(result){
            alert('Message: ' + result );
        },
        error: function(err){
           alert(err)
        }
    })
});

在PHP中,你应该echo $message;来更好地处理错误。 阅读有关jQuery/AJAX的所有内容,因为您可以使用重要的选项,例如使用JSON。