javascript - 无法通过 PHP 编辑 JSON 数组

标签 javascript php json ajax post

所以我想通过PHP编辑json文件中n个关联数组中的一个项目。新内容和索引来自 JavaScript,通过 POST 将它们发送到此 php 文件。 JSON 文件如下所示:

[{"title":"This is a title","content":"foo bar","date":"Friday 25th May 2018 
10:52:01 PM"}]

还有 PHP:

<?PHP
if (isset($_POST['newcontent']) && isset($_POST['index'])) {
 $data = file_get_contents("news.json"); 
 $decoded = json_decode($data); 

 $index = $_POST['index'];
 $newcontent = htmlspecialchars($_POST['newcontent']);
 $newdate = date('l jS F Y h:i:s A');
 $decoded[$index]["content"] = $newcontent;
 $decoded[$index]["date"] = $newdate;

 $output = json_encode($decoded);
 file_put_contents("news.json", $output);
 }
?>

所以这应该做的是通过索引值在 json 中选择正确的数组元素。然后将“content”键的值更改为从 POST 获取的 $newcontent,并将“date”键的值更改为 $newdate。然后将其写回json文件“news.json”。但它只是不想编辑该文件。它不会给我错误,它只是什么也不做。该文件保持不变。我检查了控制台,POST 工作正常。

编辑:经过一些进一步的测试,我发现条件 isset($_POST['newcontent'] 不会返回 true,因此其余代码实际上不会运行

最佳答案

您需要使用 json_decode() 的可选第二个参数,以便它将创建关联数组而不是对象。

$decoded = json_decode($data, true);

关于javascript - 无法通过 PHP 编辑 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50536764/

相关文章:

php - 在多行中将数据搜索到一个表中

javascript - 在 Post API 调用正文中动态传递参数

javascript - Backbone.js Web 应用程序在 Internet Explorer 上不可用

php - 背景图片 url 不适用于 LessCSS

javascript - Chrome 扩展 : Open tab without popup

PHP MYSQL 最简单的用户搜索技术与排序结果

java - 如何使用 Jackson 库获取 JSON 响应的嵌套属性?

json - 在 Swift 2.0 中从 JSON 对象获取值

javascript - 多个 Bootstrap 模式的滚动问题

javascript - Toastr 实现,在 IE 10 中显示错误后