Php 第一次ajax尝试--未正确同步

Php 第一次ajax尝试--未正确同步,php,jquery,ajax,Php,Jquery,Ajax,因此,我尝试使用一个表,该表每行生成多个提交按钮。我用一个php while循环来实现这一点。每个按钮都有一个来自数据库的对应“id”值。该表将填充数据库中状态为“Ordered”的所有内容。在每一行上,我可以单击一个按钮,将其更改为“已接收”或“已取消”。这就是为什么我给每个按钮分配了一个“id”值,所以它只影响正在单击的行的状态。到目前为止,所有这些都工作正常,但我希望能够使用ajax来完成这项工作,而不是每次都刷新页面 目前,我的ajax有以下功能: $('#cancel').c

因此,我尝试使用一个表,该表每行生成多个提交按钮。我用一个php while循环来实现这一点。每个按钮都有一个来自数据库的对应“id”值。该表将填充数据库中状态为“Ordered”的所有内容。在每一行上,我可以单击一个按钮,将其更改为“已接收”或“已取消”。这就是为什么我给每个按钮分配了一个“id”值,所以它只影响正在单击的行的状态。到目前为止,所有这些都工作正常,但我希望能够使用ajax来完成这项工作,而不是每次都刷新页面

目前,我的ajax有以下功能:

     $('#cancel').click(function(e) {
         e.preventdefault();
//set value of cancel button to a variable
          var value = $("#cancel").val();
                $.ajax({
                  method: "POST",
                  url: "updatetable.php",
                  data: {cancel: value},

                });
        });
这是我的PHP:

//updatetable.php
     if($_POST['cancel']) {

     echo $_POST['cancel'];
     }
之所以使用“如果”语句,是因为我还需要单击received,但如果yall帮助我解决这一部分,我可以自己完成剩下的工作

现在,我甚至无法将它与POST变量的简单回显连接起来

仅供参考,以下是按钮的html标记:

<button type='submit' class='btn btn-danger' name = 'cancel' id = 'cancel' value='".$row['order_id']."'>Cancel</button>
 <button type='submit' class='btn btn-success' name = 'received' id= 'received' value='".$row['order_id']."'>Received</button>
取消
收到
(按钮由PHP echo语句输出,因此在值设置中为concats)


我已经试着学习了一些教程,但是我不明白为什么这个连接不正确。也许我需要将其更改为“button”类型的输入,而不是按钮类型的submit?但是,“value”的实际值将显示为文本,而不是“cancel”一词。非常感谢您的帮助。

您需要在您的ID上添加一个唯一标识符。以下是我将要做的:

事实上,我会这样做,但那不是你使用的:

function cancelClick(btn){    
    var value = $(btn).val();
    $.post("updatetable.php",{cancel: value});
});
然后你的用户界面会像:

<button type='button' 
        class='btn btn-danger' 
        value='<?=$row['order_id'] ?>' 
        onClick="cancelClick(this)">Cancel
</button>
<button type='button' 
        class='btn btn-success' 
        value='<?=$row['order_id'] ?>'
        onClick="otherFnName(this)>Received
</button>

Id必须是唯一的,因此不能有多个
#cancel
等按钮。但是没有ajax,它可以正常工作。因为每一行都分配了它的数据库id和按钮的值,所以我可以运行一个查询,基本上说是“updateorderssetstatus=”cancelled“where id=$row['id']”。我更关心的是ajax方面。我有它的正常工作,阅读我的评论。您认为
$(“#cancel”).val()
的值是多少。可能不是你想的那样…如果我设置了一个警报,它会在单击时提醒每行的正确值。我的问题是ajax。为什么“updatetable.php”文件不回显$\u POST['cancel']?我做错了什么,以至于它没有将ajax调用与相应的php文件连接起来?您在控制台中看到了什么?您对默认设置的看法是正确的…我删除了它。现在我的控制台抛出一个错误,说“$.ajax不是函数”。我在库中使用了正确的jquery文件。是否调用了jquery?是,确定。所以我把jquery库换成了托管的google库。现在我正在将正确的id记录到控制台。所以现在,按钮和javascript部分之间的一切都是连接和工作的。但是我的php文件仍然没有执行$\u POST变量的代码。好的……更新……我让它与文件一起工作。现在所有这些都连接起来了。如果我可以麻烦你再问一个问题…有没有办法让页面上的显示表自动反映状态的更改?现在我仍然需要手动刷新页面,以使该行在“取消”后消失。是的,您可以,我将编辑我的答案并添加该行。嗯,它的骨头。一秒钟
<button type='button' 
        class='btn btn-danger' 
        value='<?=$row['order_id'] ?>' 
        onClick="cancelClick(this)">Cancel
</button>
<button type='button' 
        class='btn btn-success' 
        value='<?=$row['order_id'] ?>'
        onClick="otherFnName(this)>Received
</button>
function cancelClick(btn){    
    var value = $(btn).val();
    $.post("updatetable.php",{
      cancel: value
      }, function (d){
        // here is where you will do stuff on return.
        // I suggest first console.log(d); and see what is returning
        // return (echo) a value to at least identify the row
        // you are wanting to delete, if that is what you are attempting
        // be sure the element you are attempting to manipulate has
        // a unique identifier (id), and then do whatever.
        // you can call a function from here also, to make it neater
        // this area will `happen` when your ajax is complete.
      });
});