Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP删除记录而不重新加载页面(使用AJAX)_Php_Jquery_Mysql_Ajax - Fatal编程技术网

通过PHP删除记录而不重新加载页面(使用AJAX)

通过PHP删除记录而不重新加载页面(使用AJAX),php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我试图通过PHP从数据库表中删除一些记录,而不需要重新加载页面(使用AJAX)。首先,我正在打印表中的所有信息,然后用户可以单击删除按钮,该按钮将删除记录。但是,我在将记录id传递给AJAX方法时遇到问题。 ListProducts.php create connection ... $result = mysqli_query($conn, $sql); echo "<table border = '1' style = 'border-collapse:collapse;'>

我试图通过PHP从数据库表中删除一些记录,而不需要重新加载页面(使用AJAX)。首先,我正在打印表中的所有信息,然后用户可以单击
删除
按钮,该按钮将删除记录。但是,我在将记录
id
传递给AJAX方法时遇到问题。

ListProducts.php

create connection
...
$result = mysqli_query($conn, $sql);

echo "<table border = '1' style = 'border-collapse:collapse;'>";
echo "<tr><th>UserID</th><th>Username</th><th>Action</th></tr>";

if (mysqli_num_rows($result)>0){
    while ($row = mysqli_fetch_assoc($result)){
        echo "<tr><td>".$row['id']."</td><td>".$row['username']."</td><td><input type = 'submit' onclick = 'delete_record()' value = 'Delete' id = '".$row['id']."'></td></tr>";
    }
}
delete.php
上,我只需删除记录并打印我在此函数中收集的已删除记录的id作为响应文本,然后打印一条消息。我做了一个测试
alert(id)
,似乎
var id
的值是 保持默认状态,就像我初始化它一样。所以错误一定是在我通过jQuery检索id的方式上。有没有办法解决这个问题?

谢谢

将$row['id']传递到javascript函数中,如下所示。在html中,按如下所示更改代码

<input type = 'submit' onclick = 'delete_record(".$row['id'].")' value = 'Delete' id = '".$row['id']."'>

希望这能帮助您将$row['id']传递到javascript函数中,如下所示。在html中,按如下所示更改代码

<input type = 'submit' onclick = 'delete_record(".$row['id'].")' value = 'Delete' id = '".$row['id']."'>

希望这对您有所帮助

您应该将
id
变量输入delete函数

echo "<tr><td>".$row['id']."</td><td>".$row['username']."</td><td><input type='submit' onclick='delete_record(".$row['id']."); return false;' value = 'Delete' id = '".$row['id']."'></td></tr>";`

您应该将
id
变量输入delete函数

echo "<tr><td>".$row['id']."</td><td>".$row['username']."</td><td><input type='submit' onclick='delete_record(".$row['id']."); return false;' value = 'Delete' id = '".$row['id']."'></td></tr>";`

将Id的值作为函数参数传递

<input type ='submit' onclick = 'delete_record(".$row['id'].")' value = 'Delete' id = '".$row['id']."'>

function delete_record(id){
    alert(id);
}

函数删除记录(id){
警报(id);
}

将Id值作为函数参数传递

<input type ='submit' onclick = 'delete_record(".$row['id'].")' value = 'Delete' id = '".$row['id']."'>

function delete_record(id){
    alert(id);
}

函数删除记录(id){
警报(id);
}

您无法从文档准备功能获取id值。这是它的“始终显示”默认值。您应该准备好文档中的剩余代码。我现在编辑了您的问题,检查它是否有效?
函数delete_rekord(){var id=“DEFAULT”;$(文档)。准备好(函数(){$(“input”)。单击(函数(){id=$(this).attr('id');})这真是一团糟-实际上,你有一个事件处理程序在另一个事件处理程序中。你明白这段代码在做什么吗?我怀疑没有。要么使用内联事件处理程序,要么使用jQuery风格的不引人注目的事件处理程序。不要混用和匹配,当然也不要将两者放在同一个元素上来处理同一个事件-非常混乱。此外,你可能会ind jQuery$.ajax比原生XHR更易于使用。@rawathemant是您的(当前待定)编辑:你不应该为了展示潜在的解决方案而编辑问题-这样没有人能看到原始问题,问题文本也没有意义。如果你认为你能解决它,将代码复制到答案中,修改它使其工作,然后发布答案。这样你也可以获得投票/答案接受等我想实际上你已经有足够的声誉,你现在应该明白这一点了。请收回你的编辑。谢谢。你不能从document ready函数中获取id值。这是由它的始终显示默认值。你应该在document ready中获取剩余的代码。我现在编辑了你的问题检查它是否有效?
函数删除_rekord(){var id=“Default”;$(document).ready(函数(){$(“输入”)。单击(函数(){id=$(this.attr('id');});})这真是一团糟-实际上,你有一个事件处理程序在另一个事件处理程序中。你明白这段代码在做什么吗?我怀疑没有。要么使用内联事件处理程序,要么使用jQuery风格的不引人注目的事件处理程序。不要混用和匹配,当然也不要将两者放在同一个元素上来处理同一个事件-非常混乱。此外,你可能会ind jQuery$.ajax比原生XHR更易于使用。@rawathemant是您的(当前待定)编辑:你不应该为了展示潜在的解决方案而编辑问题-这样没有人能看到原始问题,问题文本也没有意义。如果你认为你能解决它,将代码复制到答案中,修改它使其工作,然后发布答案。这样你也可以获得投票/答案接受等我想你已经有足够的声誉,你现在应该明白了。请撤回你的编辑。谢谢。很明显,谢谢。但是我似乎必须重新加载页面才能看到更改(在打印的表格中).我用AJAX做了什么错误吗?您的AJAX只处理删除记录而不进行页面提交/刷新。为了使具有已删除记录的表生效,您需要刷新页面。或者您可以在AJAX调用后隐藏相应的表行,以便看起来记录已从表中删除。非常明显,谢谢。但似乎此时,我必须重新加载页面以查看更改(在打印的表格中)。我是否对AJAX做了一些错误操作?您的AJAX只处理删除记录而不进行页面提交/刷新。为了使用已删除的记录影响表,您需要刷新页面。或者,您可以在AJAX调用后隐藏相应的表行,以便看起来记录已从表中删除。