【问题标题】:Redirect after sending email php json发送电子邮件php json后重定向
【发布时间】:2015-10-01 18:33:09
【问题描述】:

我正在尝试重定向 PHP 联系表单,以便在提交后将用户重定向到新页面。我该如何调整以下代码来做到这一点?

我的php表单是

<?php
$servername = "localhost";
$username = "myusername";
$password = "password";
$dbname = "mydatab";
header('Content-Type: application/json');
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$user = $conn->real_escape_string(htmlspecialchars(trim($_POST['post_kod'])));
$query = "SELECT `kod` FROM `posts` WHERE `kod` = '$user'";

$result = $conn->query($query);
if($result->num_rows > 0) {

echo json_encode(array('returned_val' => 'Code is already use!'));
}
else 
{
$result = $conn->query("SELECT * FROM kodovi WHERE special = '".$user."'");
if($result->num_rows > 0) 
{


$sql = "INSERT INTO posts (pravno, ime, prezime, email, kontakt, kod )
VALUES ('$_POST[post_pravno]', '$_POST[post_ime]', '$_POST[post_prezime]', '$_POST[post_email]', '$_POST[post_kontakt]', '$_POST[post_kod]')";
if (mysqli_query($conn, $sql)) {

$to = $_POST["post_email"];
$subject = "GOOD";
$post_ime="$_POST[post_ime]";
$post_kod="$_POST[post_kod]";
$message = "
<html>
<head>
<title></title>
</head>
<body>
<p>HELLO</p>
</body>
</html>
";

// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// More headers
$headers .= 'From: <contact@mysite.com>' . "\r\n";

mail($to,$subject,$message,$headers);



echo json_encode(array('returned_val' => 'Thanks!'));
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
}
else
{
echo json_encode(array('returned_val' => 'Code is not valid'));
}

}

如果 json 返回(谢谢!)我想重定向到 google.com

在 index.php 我有

$("#enableButtonForm").submit(function(event) {


    event.preventDefault();

$("#content-info-inner").css({ display: "block" });


    $("#content-info").html('');


    var values = $(this).serialize();


    $.ajax({
        url: "send_post.php",
        type: "post",
        data: values,
        success: function(data) {

     $("#content-info").text(data.returned_val);
},
        error:function(){
            alert("failure");
            $("#content-info").html('There is error while submit');
        }
    });
});

【问题讨论】:

  • 使用 window.location.href="google.com"
  • 在哪里添加这个代码你能把我现有代码的例子发给我吗
  • 因为你使用了ajax请求所以你必须在你的ajax请求的成功函数下添加它。

标签: php json redirect http-headers


【解决方案1】:

改变了这一行

echo json_encode(array('returned_val' => 'Thanks!'));

有了这个

$response = array(
'returned_val' => 'Thanks!',
'redirect' => 'http://www.domain.com' // Here you can add URL on which you wants to redirect the page.
);

echo json_encode($response);

还在你的 ajax 成功函数中添加另一行

$("#content-info").text(data.returned_val);

添加此行以使重定向工作

window.location.href = data.redirect;

【讨论】:

  • 是的,伙计,它正在工作,但如果用户在表单上出错,它会重定向到 mywebsite.com/undefined
  • 因此您可以在 PHP 代码上验证该 URL,如果条件为真,则使用默认 URL,否则使用静态 URL。
  • 如果它对你有用,请标记它的答案:)
【解决方案2】:

PHP

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

echo '<script>window.location.href = "http://www.google.com";</script>'; 

JS

window.location.href = "http://www.google.com";

【讨论】:

  • 是的但不起作用,不知道在哪里添加此代码:)
  • 右下 - echo json_encode(array('returned_val' => 'Thanks!'));
  • @MirkoMukaetov 如果我们在它上面打印任何东西,标题函数总是会给出错误消息。那么为什么你建议在这里添加标题函数?
  • 是的,如果你想使用标题,你必须稍微重写你的代码。否则你甚至可以添加 echo '
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 2018-01-17
  • 2021-04-03
  • 2017-07-25
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多