【问题标题】:Submit form without redirect to action page, but refresh current page提交表单而不重定向到操作页面,但刷新当前页面
【发布时间】:2015-05-14 15:11:45
【问题描述】:

我有一个发布到 basket.php 页面的表单,提交表单后它会重定向到 basket.php 页面并返回到订单页面(表单所在的页面)。它发生得很快,但你仍然可以看到购物篮页面一秒钟,我如何阻止表单显示 basket.php 页面但仍然刷新当前页面(订单页面)。

我的代码:

<?php
echo '<div class="food">'; 
echo '<form method="post" action="basket.php"    
    onsubmit="window.location.reload()" >';
echo '<h4>'.$obj->food_title.'</h4>';
echo '<div class="pic"><img src="admin/food_images/'.$obj->food_image.'" 
    width= "180" height= "160"></div>';
echo "<p><b>£".$obj->food_price."</b></p>";
echo '<div class = "btn"><a href="info.php?foo_id='.$obj->food_id.'" 
    style="float:left">INFO</a></div>';
echo '<div class = "add_b"><button>Add to Basket</button></div>';
echo '<input type="hidden" name="food_code" 
    value="'.$obj->food_id.'"  />';
echo '<input type="hidden" name="type" value="add" />';
echo '</form>';
echo '</div>';
?>

【问题讨论】:

  • 我认为你可以使用 AJAX 来做到这一点..
  • 我没有真正使用过ajax,请你举个例子。
  • AJAX 教程参考此链接...w3schools.com/ajax
  • 只需从 AJAX 执行 basket.php 文件。像这样 xmlhttp.open("GET","basket.php",true); 并且如果您想通过 URL 发送任何值。你可以给他们...

标签: php html forms


【解决方案1】:

也许这会有所帮助。包含各种答案,有些涉及使用绝对网址Refresh page after form submiting

要阻止该操作短暂显示购物篮页面,我不确定您是否可以阻止对该页面的访问。篮子.php 会在屏幕上打印任何内容吗?我认为它只是用来处理传入的 POST 变量,然后转到您的订单页面,对吗?

【讨论】:

    【解决方案2】:

    你好这里是一个简单的 ajax 表单提交文件试试这个,

    index.html:

    <!DOCTYPE html>
    <html>
    <title>AJAX Tutorial</title>
    <head>
    <link href="css/bootstrap.css" type="text/css" rel="stylesheet" />
    <script src="https://code.jquery.com/jquery-2.1.3.js"></script>
    </head>
    <body>
    <div class="container">
      <form id="add-basket-form" class="form-inline">
        <div class="form-group">
          <label class="sr-only" for="exampleInputAmount">Name</label>
          <div class="input-group">
            <input type="text" class="form-control" id="name" name="name" placeholder="name">
          </div>
        </div>
        <div class="form-group">
          <label class="sr-only" for="exampleInputAmount">Age</label>
          <div class="input-group">
            <input type="text" class="form-control" id="age" name="age" placeholder="age">
          </div>
        </div>
        <div class="form-group">
          <div class="input-group">
            <input type="submit" class="form-control" name="add" value="Add" placeholder="age">
          </div>
        </div>
      </form>
    </div>
    
    <script>
    jQuery(function(){
        $('#add-basket-form').submit(function(){
            var name = $('#name').val();
            var age = $('#age').val();
    
            $.ajax({
                url : 'basket.php',
                dataType : 'JSON',
                type : 'post',
                data: {
                    'name' : name,
                    'age' : age,
                },
                success: function(data) {
                    console.log(data);
                }
            });
            return false;
        });
    });
    </script>
    </body>
    </html>
    
    <?php
        $name = $_POST['name'];
        $age = $_POST['age'];
        // Above is the way to get variables and you can process whatever you want
    
        echo 'success';
    ?>
    

    【讨论】:

      【解决方案3】:

      从 basket.php 中剪切代码并将其粘贴到您的主页顶部,前面加上

      if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        //basket.php code here 
      }
      

      然后,将表单代码更改为

      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
      

      这将刷新页面并执行页面顶部的php代码。

      【讨论】:

      • 我需要将 basket.php 放在单独的页面上。
      • basket.php 中的一些变量也链接到其他页面,这样做会导致我更改这些页面中的很多内容
      • 嗯,这就是我的做法,考虑将来自 basket.php 的变量放入会话中,就像 $_SESSION['value1'] = $variable1; 之后,您可以使用 $variable1 = $_SESSION['value1']; 在另一个页面上调用变量.为此,您需要确保在要调用变量的每个页面上都有session_start();。只是想帮忙。
      猜你喜欢
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多