Jquery Ajax在后台运行的多个页面上发布数据

时间:2016-04-02 11:17:27

标签: javascript php jquery html ajax

如何在多个页面上执行Jquery Ajax发布数据。

例如,我使用了名为Page1,Page2,Page3的三个页面。我需要发布第1页的数据 - > Page2和,来自Page2 - >第3页。用户仅在Page1上启动,所有其他功能应在后台执行。这可能吗?

这是使用的代码。

page1.php中:

<html>
<head><title>Page1</title></head>
<script src="/path to/jquery.min.js"></script>
<body>
<button  type="button" class="btn" id="bt">SEND</button>
<script>
var a1="Hello";
var b1="Testing Ajax";
$(function(){
$('#bt').click(function(){
 $.ajax({
      url: 'Page2.php',
        type: 'POST', 
       data: {'w1': a1,'w2':b1}, 
     alert("Data Sent...");     
        }, 
       error: function() {
         alert("Unable to send data now.");
        } 
   });}); }); 
</script>
</body>
</html>

使page2.php:

<html>
<head><title>Page 2 </title></head>
<body>
<?
 $r1 = $_POST['w1'];
 $r2 = $_POST['w2'];
?>
<div id="dom1" style="display: none;">
<?php 
    $r1 = $_POST['w1'];
    echo htmlspecialchars($r1); 
?>
</div>
<div id="dom2" style="display: none;">
<?php 
   $r2= $_POST['w2'];
    echo htmlspecialchars($r2); 
?>
</div>  
<script>
var div1 = document.getElementById("dom1");
var m1 = div1.textContent;
//alert(m1);
var div2 = document.getElementById("dom2");
var m2 = div2.textContent;
//alert(m2);

 $.ajax({
      url: 'Page3.php',
        type: 'POST', 
       data: {'x1': m1,'x2':m2}, 
     alert("Data Sent...");     
        }, 
       error: function() {
         alert("Unable to send data now.");
        } 
   });

</script>
</body>
</html>

Page3.php:

<html>
<head>
<title>Page3</title></head>
<body>
<div id="dom3">
<?php 
    $r1 = $_POST['x1'];
    echo htmlspecialchars($r1); 
?>
</div>
<div id="dom2">
<?php 
   $r2 = $_POST['x2'];
    echo htmlspecialchars($r2); 
?>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决您的问题。

  1. PHP会话 您可以轻松地在每个页面中开始会话并发布

    <?php
    // every page needs to start the session
    session_start();
    
    // after submission or posting
    $_SESSION['data'] = $your_data;
    ?>
    

    因此,在您的下一页上,您可以通过会话轻松访问您的数据。

    <div>
        <?= $_SESSION['data']['var1'] ?>
    </div>
    
  2. 使用表单并通过jQuery ajax请求发送它们,并将下一页的表单值放入隐藏的输入元素中。

    <!-- example for page 2 -->
    <form id="your_form" method="post" action="">
        <input type="hidden" name="var1" value="<?= $var1 ?>">
        <input type="hidden" name="var2" value="<?= $var2 ?>">
        <input type="submit" id="submit" name="submit" value="submit">
    </form>
    <script type="text/javascript">
        $('#submit').on('click', function( event ) {
            event.preventDefault();
            $.ajax({
                url : your_url,
                type : 'POST',
                data : $('#your_form').serialize();
             });
        });
    </script>
    
  3. 不要使用ajax。你真的不需要它,你从一页到另一页跳。看下面的例子。

    <!-- on page1.php just a quick form -->
    <form id="form1" method="post" action="page2.php">
        <label for="var1">Var 1</label>
        <input type="text" name="var1" id="var1" value="">
        <input type="submit" name="submit" value="submit">
    </form>
    
    <!-- on page2.php just another quick form with hidden elements -->
    <form id="form2" method="post" action="page3.php">
        <label for="var2">Var 2</label>
        <input type="text" name="var2" id="var2" value="">
    
        <input type="hidden" name="var1" value="<?= $_POST['var1'] ?>">
        <input type="submit" name="submit" value="submit">
    </form>
    
  4. 在每3个给定的例子中,你应该考虑诸如逃避后期变量等安全性的东西。