【发布时间】:2020-07-24 14:52:13
【问题描述】:
可能是一个初学者的问题,但我想我忘记了一些我找不到的东西,因为我在 ajax 返回 html 页面数据之前遇到了这样的错误。但是这次我又面临一个问题,当我点击按钮时,它还会返回当前页面下方的登录页面。而不是重定向它登录页面打开当前页面下方的登录页面所以这里没有进一步做是我的代码
$(document).on("click","#submit_review",function(e){
e.preventDefault();
var review_comment = $("#review_comment").val();
var productid = getUrlParameter('id');
var reviewarray = [review_comment,productid];
var dataArr = JSON.stringify(reviewarray);
$.ajax({
url:"review-ajax.php",
type:"POST",
data:{review:dataArr},
success:function(response){
alert(response);
});
这是我的 ajax 代码
session_start();
if(isset($_POST['review'])){
if(isset($_SESSION['email'])){
$json_data = json_decode($_POST['review']);
$review_comment = htmlspecialchars($json_data[0]);
$product_id = htmlspecialchars($json_data[1]);
$email = $_SESSION['email'];
include "conn.php";
$useridquery = $con->prepare("SELECT * FROM user WHERE email =:email");
$useridquery->bindParam(":email",$email);
$useridquery->execute();
$userresult = $useridquery->fetch();
$userid = $userresult['id'];
$date = date('d-m-Y');
//Insert in the review table
$reviewInsertQuery = $con->prepare("INSERT INTO product_review(product_id, user_id, review_comment,date) VALUES (:product,:user_id,:review,:date)");
$reviewInsertQuery->bindParam(":product",$product_id);
$reviewInsertQuery->bindParam(":user_id",$userid);
$reviewInsertQuery->bindParam(":review",$review_comment);
$reviewInsertQuery->bindParam(":date",$date);
$reviewInsertQuery->execute();
echo 1;
}else{
header('location:loginregister.php');
}
}
?>
【问题讨论】:
-
header()函数将更改 ajax 调用的目标,因此loginregister.php中发生的任何事情都将返回给 ajax。它不会告诉 ajax js 将用户重定向到loginregister.php。 -
所以我不应该使用header函数吗?
-
正确。而是返回您在 ajax 成功处理程序中使用的内容(最好是 json),然后使用
window.location.href = 'wheretogo';重定向用户。这是一个关于它的随机答案:stackoverflow.com/a/44949236/2960971 -or- stackoverflow.com/questions/20975546/… -or- stackoverflow.com/questions/18745669/ajax-php-headerlocation -
关于
htmlspecialchars(),请阅读stackoverflow.com/a/4882317/2943403。用户的id应该保存在会话中,而不是电子邮件中。请阅读stackoverflow.com/a/42869960/2943403 -
您应该以
Y-m-d格式插入当前日期,以享受mysql 提供的所有日期类型优势。您甚至不应该从 php 传递日期字符串——只需使用CURRENT_DATEstackoverflow.com/q/28094069/2943403
标签: javascript php jquery mysql