AJAX-从包含的AJAX PHP foreach中删除MySQL中的一行
我有3个文件。第一个index.php,逻辑发生在这里。下一个是一个文件,我在其中读取所有MySQL行并将其写入PHP文件,该文件使用ajax包含,内容打印到index.PHP中的一个div中。在单击元素的特定类之后,第三个文件应该能够删除一个特定行。元素还有一个id属性,用于jQuery指定要删除的属性 移除没有发生。它甚至不写console.log。你能看一下并告诉我,我在哪里犯了错误吗?这可能是一些我看不出来的“逻辑”错误 (这是一个测试项目,我正在创建类似于学习AJAX的模板的东西) 要从index.php检查的零件:AJAX-从包含的AJAX PHP foreach中删除MySQL中的一行,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我有3个文件。第一个index.php,逻辑发生在这里。下一个是一个文件,我在其中读取所有MySQL行并将其写入PHP文件,该文件使用ajax包含,内容打印到index.PHP中的一个div中。在单击元素的特定类之后,第三个文件应该能够删除一个特定行。元素还有一个id属性,用于jQuery指定要删除的属性 移除没有发生。它甚至不写console.log。你能看一下并告诉我,我在哪里犯了错误吗?这可能是一些我看不出来的“逻辑”错误 (这是一个测试项目,我正在创建类似于学习AJAX的模板的东西) 要
//this makes removing happen AJAX (NOT WORKING PART)
$(document).ready(function () {
$('.smazat').click(function () {
var id = $(this).data('id');
console.log("Vyvoláno smazání záznamu: " + id + ".");
$.ajax({
type: 'POST',
url: 'ajax/smazatClanekAJAX.php',
data: {id: id},
success: function () {
console.log("Záznam smazán.");
vypsatNovinky();
}
});
});
});
vsechniclankyayajax.php
<?php
include "../db.php";
foreach ($database->queryAll("select * from clanky order by id desc") as $item) {
echo "
<hr>
<strong>$item[title]</strong>
<p>$item[text]</p>
<p id='$item[id]' value='Smazat' class='smazat btn btn-danger'>Smazat</p>
";
}
exit;
简单的解决方案是使用JQuery而不是JQuery,而且它可以工作
在这里,您可以在代码段中进行检查:
$(文档).ready(函数(){
$('.smazat')。单击(函数(){
var id=$(this.attr('id');
log(“Vyvoláno smazánízáznamu:“+id+”);
});
});代码>
Smazat
$('.Smazat')。click()
将click处理程序绑定到具有该类的、当时存在于DOM中的所有元素。如果以后动态加载并插入元素,则这将不适用于它们。通常的解决方法称为事件委派。@04FS谢谢您的回答。我研究了jQuery文档,以感谢您为例。我做了改变。但我不明白。为什么“包含”的php foreach文件使脚本无法工作。就像控制台中没有输出一样,您可以转到控制台并检查是否有任何错误。右键单击浏览器并选择inspect element,检查ID的值,无论它是否来自数据库。
<?php
include "../db.php";
foreach ($database->queryAll("select * from clanky order by id desc") as $item) {
echo "
<hr>
<strong>$item[title]</strong>
<p>$item[text]</p>
<p id='$item[id]' value='Smazat' class='smazat btn btn-danger'>Smazat</p>
";
}
exit;
<?php
include('../db.php');
$database->query("delete from clanky where id='$_POST[id]'");
exit;