如何修复在同一网页上打开一个小网页的PHP页眉位置[已关闭]

kb5ga3dv  于 2023-01-29  发布在  PHP
关注(0)|答案(2)|浏览(108)

已关闭。此问题需要超过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是第一个代码所在的位置。

piv4azn7

piv4azn71#

由于你是通过 AJAX 提交表单,那么你必须处理页面重定向在ajax只。
因此,更改PHP代码如下:

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();

    //send json encoded response to ajax
    echo json_encode(array('status'=>1,'msg'=>'Inserted successfully'));//message is optional
}

并更改 AJAX 代码如下:

<script type="text/javascript">
    $(document).ready(function() {
        // Sending Form data to the server
        $("#placeOrder").submit(function(e) {
            e.preventDefault();
            $.ajax({
                url: 'action.php',
                dataType: "json", //asked response as json type
                method: 'post',
                data: $('form').serialize() + "&action=order",
                success: function(response) {
                    var result = $.parseJSON(response); // parse response
                    if(result.status == 1){ //check if response is success
                        window.location.href = "payment.php"; // redirect to new page
                    }
                }
            });
        });
    });
</script>
guz6ccqo

guz6ccqo2#

发生这种情况是因为您可能使用 AJAX 或js脚本来提交表单。因此,当请求完成并且header()代码运行时,它会返回您试图重定向到的页面的页面内容作为调用的响应,而不是重定向整个页面。
你的解决方案是在JS端根据你从PHP脚本得到的响应进行重定向,例如如果响应等于1,则重定向,否则显示响应内容,这将是主要的错误内容
也就是说,在 AJAX success函数中使用if/else条件来执行重定向,而不是只执行header("Loaction:payment.php")

if(response==1){
window.location.assign("payment.php");
}else{
// output your error message
}

我已经添加了下面的代码就你的意见,记住你需要从你的PHP脚本echo 1

<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)
        if(response==1){
           window.location.assign("payment.php"); 
        }else{ 
          // output your error message 
        } 
    });
  });
});
</script>

相关问题