Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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
AJAX-从包含的AJAX PHP foreach中删除MySQL中的一行_Php_Jquery_Mysql_Ajax - Fatal编程技术网

AJAX-从包含的AJAX PHP foreach中删除MySQL中的一行

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的模板的东西) 要

我有3个文件。第一个index.php,逻辑发生在这里。下一个是一个文件,我在其中读取所有MySQL行并将其写入PHP文件,该文件使用ajax包含,内容打印到index.PHP中的一个div中。在单击元素的特定类之后,第三个文件应该能够删除一个特定行。元素还有一个id属性,用于jQuery指定要删除的属性

移除没有发生。它甚至不写console.log。你能看一下并告诉我,我在哪里犯了错误吗?这可能是一些我看不出来的“逻辑”错误

(这是一个测试项目,我正在创建类似于学习AJAX的模板的东西)

要从index.php检查的零件:

        //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;