我正在尝试创建一个列出数据库表中所有行的HTML表。然后,在每一行旁边我想要一个按钮,以便用户可以删除该条目。我已经创建了表格,但我无法使按钮起作用。
我一直在寻找,我发现这篇文章How to Call a PHP Function on the Click of a Button,但我无法让它发挥作用。我之前从未使用过ajax,因此我可能无法正确理解代码。
以下是代码:
浏览表格中的所有数据,并为每个条目创建一个按钮
<?php
for ($x = 0; $x < sizeof($data); $x++) {
?>
<input type="submit" class="tableButton" name="<?php echo $x ?>" value="<?php echo $x ?>">
<?php
}
?>
点击tableButton后,将其值发送到ajax.php
$('.tableButton').click(function () {
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = { 'action': clickBtnValue };
$.post(ajaxurl, data, function (response) {
});
});
ajax.php
获取已按下的按钮的值并使用它执行某些操作
<?php
if (isset($_POST['action'])) {
$data = $_POST['action'];
echo $data;
}
?>
目前我只是回应测试它的值,但它没有显示任何内容。我要做的就是运行这个查询:
DELETE from myTable WHERE id = $data;
如果有人知道更好的方法,请告诉我。
修改
经过多次搜索后,我发现为什么这不符合我的预期。我怀疑,因为我之前从未使用过AJAX,但我不知道回声不会直接打印到屏幕上。我刚刚将echo更改为删除查询并对其进行了测试并且它可以工作......所以代码很好,但我想我应该在某个时候学习AJAX。感谢所有回复。
我也知道这里可以使用sql注入,这只是一个快速的模型,谢谢。
答案 0 :(得分:1)
从这个角度来看,很难帮助你。
您应该进行一些调试,例如:
让我听听你的意见。
答案 1 :(得分:1)
确定。首先,您需要创建具有行ID的按钮。你可以使用mySQL和PHP循环来完成它。按以下格式创建。
<input type="submit" name="test" data-id="23" value="Remove" class="delete_row" />
<input type="submit" name="test" data-id="24" value="Remove" class="delete_row" />
<input type="submit" name="test" data-id="25" value="Remove" class="delete_row" />
<input type="submit" name="test" data-id="26" value="Remove" class="delete_row" />
这里将每个按钮中的data-id替换为您要删除的行的id。(动态替换23,24等数据库ID)。
Java脚本
$(document).ready(function(){
$(".delete_row").click(function(e){
e.preventDefault();
var deleteId = $(this).attr("data-id");//unique id of the raw to be deleted
var request = $.ajax({
url: "ajax.php",
type: "POST",
data: { id : deleteId },
dataType: "json"
});
request.done(function( msg ) {
if( msg.status )
alert("Deleted successfully!");
else
alert("Something gone wrong!!");
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
});
});
<强> ajax.php 强>
<?php
/* AJAX check */
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$delete_id = $_POST["id"];
if( is_numeric( $delete_id ) ){
/*DELETE QUERT WHERE id = $delete_id (Try to use mysqli or PDO ) */
/* $affected_rows = effected_rows() */
if( $affected > 0 )
{
echo json_encode( array("status" => true ) );die;
}
}
echo json_encode( array("status" => false ) );die;
}
die("Get out of here!");
?>
我希望这会对你有所帮助:)。
答案 2 :(得分:1)
你可以这样试试。我认为它会对你有所帮助
Html文件
<html>
<head>
<title>Test</title>
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
$('.tableButton').live('click', function(){
var id = $(this).val();
$.ajax({
url:'ajax.php'
,data:{id:id}
,type:'post'
,success:function(data){
if(data == 'success'){
$('#' + id).remove();
}
}
});
});
</script>
<?php
for ($x = 0; $x < 5; $x++) {
?>
<input type="submit" class="tableButton" id="<?=$x?>" name="<?php echo $x ?>"value="<?php echo $x ?>">
<?php
}
?>
</body>
</html>
<强> ajax.php 强>
<?php
if(isset($_POST['id'])){
$id = $_POST['id'];
//delete operation here
//if(deleted) echo 'success';
}
?>