使用Ajax/jQuery时的php表单提交

使用Ajax/jQuery时的php表单提交,php,jquery,ajax,forms,Php,Jquery,Ajax,Forms,我正在尝试创建类似于现场拍卖的东西,我使用Ajax/jQuery基本上刷新嵌入页面以显示任何数据库更改(例如新的出价),这一切都是可行的,但是,当尝试添加表单以创建出价时,表单不会提交,如何创建与嵌入页面相对应的表单并相应地更新数据库 我所尝试的是: auctions.php: <?php if(isset($_POST['100k'])) { echo "Bidded!"; } ?> <div id="auctions">Loading Auctions, please

我正在尝试创建类似于现场拍卖的东西,我使用Ajax/jQuery基本上刷新嵌入页面以显示任何数据库更改(例如新的出价),这一切都是可行的,但是,当尝试添加表单以创建出价时,表单不会提交,如何创建与嵌入页面相对应的表单并相应地更新数据库

我所尝试的是:


auctions.php:

<?php
if(isset($_POST['100k'])) {
echo "Bidded!";
}
?>
<div id="auctions">Loading Auctions, please wait...</div>

<script type="text/javascript">

setInterval(function()
{
   $.ajax({url:"/embeddedauctions.php", type:"GET", async:true, cache:false, success:function(result)
{
     $("#auctions").html(result);

}});

},1000);
</script>
<?php
    if(isset($_POST['field_name']) && ($_POST['field_name']==100K) ) {
    echo "Bidded!";
    }
    ?>
    <div id="auctions">Loading Auctions, please wait...</div>

    <script type="text/javascript">

    setInterval(function()
    {
       $.ajax({
           url:"/embeddedauctions.php", 
           type:"post",
           async:true,
           dataType:'html',
           data:'field_name=100k' 
           cache:false,
           success:function(result)
    {
         $("#auctions").html(result);

    }});

    },1000);
    </script>

正在加载拍卖,请稍候。。。
setInterval(函数()
{
$.ajax({url://embeddedauctions.php),类型:“GET”,异步:true,缓存:false,成功:函数(结果)
{
$(“#拍卖”).html(结果);
}});
},1000);
embeddedauctions.php

    <?php
    if(isset($_POST['100k'])) {
    echo "Bidded!";
    }
    ?>

<table class="table table-bordered">
      <thead>
        <tr>
          <th>Name</th>
          <th>Start Price</th>
          <th>Buy Now</th>
          <th>Current Bid</th>
          <th>Bid</th>
        </tr>
      </thead>
      <tbody>

<?php
          $query = $db->query('SELECT * FROM auctions WHERE active = 1 ORDER BY endTime ASC') or die(mysqli_error($db));
          $num = $query->num_rows;
          if($num > 0) {

          foreach($query as $row) {
              $name = $row['name'];
          $startPrice = $row['startPrice'];
          $buyNow = $row['buyNow'];
          $currentBid = $row['currentBid'];

          echo '

          <form action="/auctions.php" method="post">
          <div id = "container">
                  <tr>
          <td>'.$name.'</td>
          <td>'.$startPrice.'</td>
          <td>'.$buyNow.'</td>
         <td>'.$currentBid.'</td>
          <td><input type="submit" class="btn btn-xs btn-success" name="100k" value="Bid +&pound;100k"></td>
          </tr>
          </form>
          ';

          }
          }
?>
      </tbody>
    </table>

名称
起价
立即购买
当前出价
投标
有没有办法在auctions.php上成功提交表单,目前当我点击提交按钮时它什么都不做,谢谢

  • 公开的代码中缺少ID为“auctions”的HTML元素,因此没有任何地方可以回显结果
  • 您可能需要添加一个出口;在你回音“Bidded!”之后
  • 添加错误函数并检查结果和状态
  • 编辑


    删除URL开头的斜杠。

    我发现从embeddedauctions.php中删除并添加表单标签解决了这个问题

    <form action="/auctions.php" method="POST">
    <div id="auctions">Loading Auctions, please wait...</div>
    
    <script type="text/javascript">
    
    setInterval(function()
    {
       $.ajax({url:"/embeddedauctions.php", type:"GET", async:true, cache:false, success:function(result)
    {
         $("#auctions").html(result);
    
    }});
    
    },1000);
    </script>
    </form>
    
    
    正在加载拍卖,请稍候。。。
    setInterval(函数()
    {
    $.ajax({url://embeddedauctions.php),类型:“GET”,异步:true,缓存:false,成功:函数(结果)
    {
    $(“#拍卖”).html(结果);
    }});
    },1000);
    
    拍卖。php:

    <?php
    if(isset($_POST['100k'])) {
    echo "Bidded!";
    }
    ?>
    <div id="auctions">Loading Auctions, please wait...</div>
    
    <script type="text/javascript">
    
    setInterval(function()
    {
       $.ajax({url:"/embeddedauctions.php", type:"GET", async:true, cache:false, success:function(result)
    {
         $("#auctions").html(result);
    
    }});
    
    },1000);
    </script>
    
    <?php
        if(isset($_POST['field_name']) && ($_POST['field_name']==100K) ) {
        echo "Bidded!";
        }
        ?>
        <div id="auctions">Loading Auctions, please wait...</div>
    
        <script type="text/javascript">
    
        setInterval(function()
        {
           $.ajax({
               url:"/embeddedauctions.php", 
               type:"post",
               async:true,
               dataType:'html',
               data:'field_name=100k' 
               cache:false,
               success:function(result)
        {
             $("#auctions").html(result);
    
        }});
    
        },1000);
        </script>
    
    
    正在加载拍卖,请稍候。。。
    setInterval(函数()
    {
    $.ajax({
    url:“/embeddedauctions.php”,
    类型:“post”,
    async:true,
    数据类型:'html',
    数据:'field_name=100k'
    cache:false,
    成功:功能(结果)
    {
    $(“#拍卖”).html(结果);
    }});
    },1000);
    
    服务器页面(embeddedauctions.php)将前几行更改为两行

      <?php
        if(isset($_POST['field_name']) && ($_POST['field_name']==100K) ) {
        echo "Bidded!";
        }
        ?>
    
    
    
    有一个ID为“auctions”的div,因为@gaurav说有一个auctions ID,我添加了exit;但是表单一开始甚至不提交,但是当我直接访问embeddedauctions.php时,它都可以工作,但是每次对数据库进行新的输入或更新时,它都需要被auctions.php访问才能更新。您的HTML代码无效,您不能将
    表单
    作为
    的子元素–
    表单
    必须遍历整个
    ,或者完全放在
    td
    元素中。当我直接访问embeddedauctions.php时,表单在其内部工作是不正确的,你不知道浏览器将如何处理它,所以请修复它。好的,我已经更改了它,但是问题仍然存在。从现在起我将使用表外的表单,谢谢。为什么要使用没有输入文本的表单?为什么不把它做成一个按钮,并将一个ajax请求附加到该按钮的点击事件上呢?