尝试使用ajax jquery将2个变量传递给php - php

我一直在寻找一种在执行onclick函数时将一些数据更新到数据库中的方法。
想法是更新包含单词“ Active”的按钮的值,并且在执行onclick时喜欢将mysql更新为“ Inactive”
这是按钮:

$register_status = '<button class="btn btn-success btn_status btn-block" data-status="Active">Active</button>';

如何给数据变量,以便我们可以使用$ _POST在PHP中获取它?数据变量的以上表示显示错误。

scripts.js

$(document).ready(function(){
  $('body').click('.btn_status', function(e){
  var button = jQuery(e.target);
        if(button.data('status') == 'Active'){ 

        var data = {id:id, register_status:Inactive};
        $.ajax({
           type: "POST",
           dataType: "json",
           url: "ajax/updateStatus.php",
           data: data,
           success: function(data) {
                alert("update!");
           }
        });

        }else if(button.data('status') == 'Inactive'){
          alert("nothing");
        }
  });
})

ajax / updateStatus.php

include("db_connection.php");

if(isset($_POST))
{
    $id = $_POST['id'];
    $register_status = $_POST['register_status'];
    $query = "UPDATE `users` SET `register_status` = '$register_status'  WHERE `id` = '$id'";
    if (!$result = mysqli_query($db,$query)) {
        exit(mysqli_error());
    }
}

更新:

这是另一个要删除的功能。此功能运行正常。

function DeleteUser(id) {
        $.post("ajax/deleteUser.php", {
                id: id
            },
            function (data, status) {
                readRecords();
            }
        );
}

deleteUser.php

<?php
if(isset($_POST['id']) && isset($_POST['id']) != "")
{
    include("db_connection.php");
    $user_id = $_POST['id'];
    $query = "DELETE FROM users WHERE id = '$user_id'";
    if (!$result = mysqli_query($db,$query)) {
        exit(mysqli_error());
    }
}
?>

单击什么时候可以删除:

<li onclick="DeleteUser('.$row['id'].')"><a href="#">Delete</a></li>

但是,这似乎不起作用。如果有更好的方法来做我上面提到的事情。谢谢

参考方案

根据示例,您将需要进行一些更改:

的JavaScript

$(function(){
  function updateStatus(id, st){
    $.post("ajax/updateStatus.php", {"id": id, "register_status": st}, function(data, status){
       console.log("Update Success", data, status);
       readRecords();
    });
  }

  $('body').on('click', '.btn_status', function(e){
    var button = $(this);
    updateStatus(1001, (button.data("status") === "Active" ? "Inactive" : "Active"));
  });
});

首先,使用click()并不是最好的方法。使用.on()会更好,因为它可以处理任何新的或动态创建的项目。

该脚本将要求在某处定义id。 AJAX需要将id信息发送到PHP。您发布的代码没有显示此内容,因此我不确定它的值应该是多少。

PHP(updateStatus.php)

include("db_connection.php");

if(isset($_POST['id'])){
    $id = (int)$_POST['id'];
    $register_status = ($_POST['register_status'] == "Inactive" ? "Inactive" : "Active");
    $query = "UPDATE `users` SET `register_status` = '$register_status'  WHERE `id` = '$id'";
    if (!$result = mysqli_query($db,$query)) {
        exit(mysqli_error());
    }
}

这些更新可以帮助防止SQL注入。我建议使用Prepared Statements进一步阻止它。

更新资料

如果您要的按钮将是这样的:

<button onclick="ChangeStatus('.$row['id'].') class="btn btn-success btn_status btn-block" data-status="Active">Active</button>

注意,这只是从PHP传入ID。如果这些项目始终为“有效”,那么可以,您可以使用以下方法进行操作:

function ChangeStatus(id){
  $.post("ajax/updateStatus.php", {id: id}, function(data, status){ console.log(status, data)});
}

与PHP类似:

<?php
if(isset($_POST['id']) && $_POST['id'] != ""){
  include("db_connection.php");
  $user_id = (INT)$_POST['id'];
  $query = "UPDATE `users` SET `register_status` = 'Inactive'  WHERE `id` = '$user_id'";
  if (!$result = mysqli_query($db,$query)) {
    exit(mysqli_error());
  }
}
?>

希望这可以帮助。

如何从php中获取datatables jQuery插件的json数据 - php

我是PHP的新手,正在尝试使用Datatables jQuery插件。我知道我必须从.php文件中获取数据,然后在数据表中使用它,但是我似乎无法通过ajax将其传递给数据表。我设法从数据库中获取数据,并对其进行json编码,但是后来我不知道如何在我的index.php文件中调用它,并在其中显示它。我究竟做错了什么?这是我的代码:HTML(已编辑): <…

PHP JQuery复选框 - php

我有以下片段。 var myData = { video: $("input[name='video[]']:checked").serialize(), sinopse: $("#sinopse").val(), dia: $("#dia").val(), quem: $(&#…

PHP-正则表达式删除引号并添加大括号? - php

好吧,我不愿承认这一点,但是我对REGEX感到很困难,我永远找不到关于如何设置表达式的不错的教程。所以说我有这样的事情context['something'] 我想将所有事件更改为context[something] 那我有' . $var . ' 我想将所有事件更改为{var} 这是当前的概念,但是我在正则表达式部分…

PHP:将元素ID作为哈希添加到Facebook共享链接 - php

在this page上,我有一堆显示为精美框的mp3文件。每个框都有一个Facebook分享按钮。我想将每个框ID((mp3jWrap_0, mp3jWrap_1等)作为哈希添加到其Facebook共享链接,以便每次从Facebook访问共享项目时,URL都包含该项目的哈希。为此,我编写了代码:<?php $actual_link = (isset($…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…