gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:59:02 25 4
gpt4 key购买 nike

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

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

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

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 注入(inject)。我建议使用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 - 尝试使用ajax jquery将2个变量传递给php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56874666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com