首先是ajax尝试 - 没有正确同步

时间:2018-01-17 15:16:13

标签: php jquery ajax

所以我试图使用一个每行生成多个提交按钮的表。我用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'];
     }

" if"声明是因为我还需要点击收到但是如果你帮我解决这个问题,我可以自己完成剩下的工作。

现在,我甚至无法通过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)

我已经尝试过几个教程,但我无法弄清楚为什么它没有以正确的方式连接。也许我需要将其更改为输入类型&#34;按钮&#34;而不是按钮类型提交?但那么&#34;值的实际价值&#34;将显示为文本而不是单词&#34;取消&#34;。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您希望在ID上添加唯一标识符。这就是我要做的事情(相反):

function cancelClick(btn){    
    e.preventdefault();  // I dont think this is needed
    var value = $(btn).val();
    $.ajax({
        method: "POST",
        url: "updatetable.php",
        data: {cancel: value},
    });
});

实际上我会这样做,但这不是你用的:

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>

编辑:在返回时执行任务,您可以执行以下操作:

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.
      });
});