Javascript 如何让PHP脚本删除JSON文件中的对象?

Javascript 如何让PHP脚本删除JSON文件中的对象?,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,因此,我有一个HTML文件,该文件动态填充了JSON文件中的信息,并带有一个ajax\u POST请求 我所要做的就是抓取json(只是一个简单的对象数组),通过ajax传递的索引号去掉相应的json,然后将json重新编码回同一个文件中。没有错误,但什么都没有发生 谢谢 以下是我的ajax: $(document).ajaxComplete(function(event, xhr, settings) { var json = "data/comments.json";

因此,我有一个HTML文件,该文件动态填充了JSON文件中的信息,并带有一个ajax\u POST请求

我所要做的就是抓取json(只是一个简单的对象数组),通过ajax传递的索引号去掉相应的json,然后将json重新编码回同一个文件中。没有错误,但什么都没有发生

谢谢

以下是我的ajax:

$(document).ajaxComplete(function(event, xhr, settings) {
        var json = "data/comments.json";
        $('.delete').click(function(index) {
            var deleteIndex = $(this).parent().attr('id');
            var deleteIndex = parseInt(deleteIndex);
            $.ajax({
                type: 'POST',
                url: 'data/save.php', // the url where we want to POST
                data: deleteIndex,
                success: function(){ 
                                        location.reload();
                                    },
                error: function(){    
                                        alert('Fail!');
                                    }
                });
        });
    });
这是我的PHP:

<?php
$data => $_POST['deleteIndex'];
$file = file_get_contents('comments.json');
$json[] = json_decode($file, true); //return an array
foreach($json as $key => $value) {
   if($value == $data) {
    unset($json[$data]);
    file_put_contents('comments.json', json_encode($json, JSON_PRETTY_PRINT));
   }
}
?>

您没有设置发送到服务器的值的名称。请求中的
数据
键应该是
{key:val}
对象(或url格式的字符串)

在您的PHP代码中,我认为这会更好:

$data = $_POST['deleteIndex'];
$file = file_get_contents('comments.json');
$json = json_decode($file, true); //return an array

unset($json[$data]); // I guess you want to delete the value by key
file_put_contents('comments.json', json_encode($json));

那效率太低了。为什么每次循环迭代都要重新编写json文件?读取json,对其进行解码,操作内存中的数据,然后在完成操作后写出新的json即不是
$json[]
为什么
json_PRETTY_PRINT
它的代码处理数据,不需要漂亮谢谢,这两个优点都很好。我尝试了上面的方法,它明确地向php脚本传递了一些东西,但实际上它正在写入json文件,而不是删除任何东西。它在isUgh中写的东西,所以这里没有。。。它在一个新的JSON对象中写入,每个条目都带有“NULL”。很高兴我能帮上忙:)没关系,我只是想知道它什么地方不起作用。我搞砸了,尴尬得连一句话都说不出来。
$data = $_POST['deleteIndex'];
$file = file_get_contents('comments.json');
$json = json_decode($file, true); //return an array

unset($json[$data]); // I guess you want to delete the value by key
file_put_contents('comments.json', json_encode($json));