已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
3天前关闭。
Improve this question
我正在做一个购物车系统,在checkout page中,输入将被发送到一个数据库,然后将用户重定向到一个名为“payment.php”的新页面。单击按钮后,数据将被发送到数据库,但我的网页变得像this,而实际上它应该看起来像this。我如何解决这个问题?以下是我的代码:
// Checkout and save customer info in the orders table
if (isset($_POST['action']) && isset($_POST['action']) == 'order') {
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$products = $_POST['products'];
$grand_total = $_POST['grand_total'];
$address = $_POST['address'];
$pmode = $_POST['pmode'];
$stmt = $conn->prepare('INSERT INTO orders (name,email,phone,address,pmode,products,amount_paid)VALUES(?,?,?,?,?,?,?)');
$stmt->bind_param('sssssss',$name,$email,$phone,$address,$pmode,$products,$grand_total);
$stmt->execute();
$stmt2 = $conn->prepare('DELETE FROM cart');
$stmt2->execute();
header("Location:payment.php");
}
AJAX :
<script type="text/javascript">
$(document).ready(function() {
// Sending Form data to the server
$("#placeOrder").submit(function(e) {
e.preventDefault();
$.ajax({
url: 'action.php',
method: 'post',
data: $('form').serialize() + "&action=order",
success: function(response) {
$("#order").html(response);
}
});
});
action.php是第一个代码所在的位置。
2条答案
按热度按时间piv4azn71#
由于你是通过 AJAX 提交表单,那么你必须处理页面重定向在ajax只。
因此,更改PHP代码如下:
并更改 AJAX 代码如下:
guz6ccqo2#
发生这种情况是因为您可能使用 AJAX 或js脚本来提交表单。因此,当请求完成并且header()代码运行时,它会返回您试图重定向到的页面的页面内容作为调用的响应,而不是重定向整个页面。
你的解决方案是在JS端根据你从PHP脚本得到的响应进行重定向,例如如果响应等于1,则重定向,否则显示响应内容,这将是主要的错误内容
也就是说,在 AJAX success函数中使用if/else条件来执行重定向,而不是只执行
header("Loaction:payment.php")
:我已经添加了下面的代码就你的意见,记住你需要从你的PHP脚本
echo 1