Javascript 如何使用php重定向按钮单击

Javascript 如何使用php重定向按钮单击,javascript,php,html,Javascript,Php,Html,我正在使用表单上的按钮。在成功提交用户信息后,我正在尝试通过单击按钮重定向到另一个页面。除了重定向之外,其他一切都正常工作。这是我试过的代码 Html代码: 现在给我看看! 如果要重定向到新站点,则需要在头位置设置绝对地址,包括协议(https://) header("Location: https://www.google.com") 如果没有协议,则假定位置是相对的,并将附加到现有域 此外,您不应在标题后回显任何内容。设置标题时,可能需要写入整个url: header("Locatio

我正在使用表单上的按钮。在成功提交用户信息后,我正在尝试通过单击按钮重定向到另一个页面。除了重定向之外,其他一切都正常工作。这是我试过的代码

Html代码:


现在给我看看!

如果要重定向到新站点,则需要在头位置设置绝对地址,包括协议(
https://

header("Location: https://www.google.com")
如果没有协议,则假定位置是相对的,并将附加到现有域


此外,您不应在标题后回显任何内容。

设置标题时,可能需要写入整个url:

header("Location: http://www.google.com");

这实际上是没有必要的

在HTML
表单
标记的内部,将要发布数据的位置添加到操作属性的内部

<form role="form"  id="contact-form" method="get" action="postpage.php"> <!-- notice the action attribute !-->

试试这个

echo '<meta http-equiv=REFRESH CONTENT=0;url=./yourDestination.php>';
echo';
正如我们在代码中看到的,页面将刷新到您声明的url

“Content=0”表示它将在0秒后刷新
如果你愿意,你可以修改号码

您不能从PHP重定向ajax请求,而是使用以下方法:

$(function() {

    $("#contact-form").submit(function(e) {
        e.preventDefault();
        e.stopImmediatePropagation();
        form = $(this);
        data = $(this).serialize();
        $.post("contact.php", data, function(response) {
            form.trigger('reset');
            //Redirection
            window.location.href = "https://www.google.com";
        });
    });

});
只需删除此
标题(“位置:https://www.example.com");来自您的PHP


我希望这将对您有所帮助。

我想知道为什么您设置了form method=“get”,但在php代码下使用了$\u POST变量。这是另一个使用POST方法的版本,如果有帮助,请尝试

<?php
ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");
if (isset($_POST['email'])) {
    $email = $_POST['email'];
    $address= $_POST['address'];
    $subject = "Message from: ".$email;
    $content = "Email: " . $email."\n"
            . "Address: " . $address;
    $headers ='Reply-To: ' . $email . "\r\n";
    mail('example@gmail.com', $subject ,$content, $headers );
    header("location: https://google.com");
    exit;
}
?>

<form role="form" id="contact-form" method="post">
  <div class="form-group row">
      <input type="email" id="email" name="email" placeholder="Enter your email" required="required" class="form-control input-lg" />
      <input type="text" id="address" name="address" placeholder="Enter your address" required="required" class="form-control input-lg" />
      <button type="submit" class="btn btn-t-primary">Show Me Now!</button>
  </div>
</form>

现在给我看看!

首先,您必须编写处理Ajax请求的PHP代码:

if (isset($_POST['ajax_request'])) {
    // write code;
    echo "http://www.example.com"; // redirect url
}
Javascript:

 jQuery(document).ready(function($) {
    $.post('/path/to/file.php', {"ajax_request": true}, function(data, textStatus, xhr) {
        window.location.href = data; // http://www.example.com
    });
});

希望这有帮助。

此示例代码与javascript无关。真正的问题是什么!提交表单时会发生什么情况?在发出重定向标题后不要回显任何内容。事实上,它之后唯一的事情应该是立即退出以防止执行任何进一步的代码。当我单击按钮时,它会通过电子邮件发送信息,但不会重定向到任何地方。与问题本身无关,但如果这将是生产代码,请正确检查您的用户输入,以防邮件头插入。我认为OP已经做到了这一点!我很好奇为什么它不起作用!更新我的答案以反映问题。是的!但即使使用
标题(“Location:www.google.com”)
它仍然会重定向到
http://op-domain/www.google.com
!是的,因为它缺少我在回答中提到的协议。我不认为这是真正的问题,因为很容易注意到这一点!相反,我认为在
标题
之前有某种输出,特别是来自
邮件
功能。在这个问题上,他们想重定向到
google.com
,所以,在这种情况下,这是行不通的,因为谷歌不会在页面上处理帖子。@Soviut他们想在下一个页面上向某人发送邮件后重定向到谷歌。他们不想让谷歌来处理这篇文章。仍然有可能发送空白电子邮件(因为没有设置$u post变量)。你可以检查你的收件箱来验证这一点。顺便说一句,是吗example@gmail.com您的真实电子邮件地址?:)哦,刚才注意到您还使用Javascript发布表单,因此它正在设置post变量。然而,在我的示例中,我将表单和php代码放在一个文件中,因此提交表单时不需要Javascript。请调整最适合您的方法。是否有任何方法可以使用php执行此操作?@WaseemBarcha是的,您可以,但您必须使用经典方法(不使用ajax)发送数据,
标题(…)
将重定向页面。