写入文件时停止PHP转义JSON字符串

写入文件时停止PHP转义JSON字符串,php,jquery,ajax,json,escaping,Php,Jquery,Ajax,Json,Escaping,我试图使用JQuery和PHP保存对JSON文件的更改,但似乎我的PHP脚本在保存JSON时正在转义字符,这意味着我无法再次读取它 我使用以下代码将JSON对象('family')传递到save.php: function saveChanges() { $.ajax({ type: "POST", url: "save.php", data: { data: JSON.stringify(family)

我试图使用JQuery和PHP保存对JSON文件的更改,但似乎我的PHP脚本在保存JSON时正在转义字符,这意味着我无法再次读取它

我使用以下代码将JSON对象('family')传递到save.php:

function saveChanges() {
    $.ajax({
        type: "POST",
         url: "save.php",
         data: {
            data: JSON.stringify(family)
         },


         success: function(msg){
             console.log(data);
   }
 });
    }
然后save.php使用以下代码将JSON数据写入armstrong.JSON

<?php

$data = $_POST["data"];
echo $data;
$filename = 'armstrong.json';

if (is_writable($filename)) {
    if (!$handle = fopen($filename, "w")) {
         echo "Cannot open file ($filename)";
         exit;
    }

    if (fwrite($handle, parse_json($data)) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }
echo "Success, wrote ($data) to file ($filename)";

fclose($handle);

} else {
    echo "The file $filename is not writable";
}

?>
有没有办法阻止它逃离角色?JSON文件应该如下所示

{
            "title"         :   "Armstrong",
            "description"   :   "The Armstrong Family",
            "patriarchID"   :   "id1",
            "latestID"      :   7,
            "members"       :   [
                {
                    "name"  :   "Grandad",
                    "id"    :   "id1",
                    "children": ["id2","id3"]
                },
                {
                    "name"  :   "Dad",
                    "id":       "id2",
                    "children": ["id4","id5","id6","id7"]
                },
                {
                    "name"  :   "Uncle",
                    "id"    :   "id3"
                },
                {
                    "name"  :   "Child",
                    "id" :  "id4"
                },
                {
                    "name"  :   "Child",
                    "id"    :   "id5"
                },
                {
                    "name"  :   "Child",
                    "id"    :   "id6"
                },
                {
                    "name"  :   "Child",
                    "id"    :   "id7"
                }

            ]
}
也许您已经在php.ini中打开了。你应该关掉它们。这可以解释逃跑的原因


编辑-如果您需要了解更多有关魔术引号的信息,请阅读。魔法引号是不好的,如果你有权访问php.ini,你应该将其关闭你已经启用了
Magic\u-quotes\u-gpc
并且斜杠在你执行
$data=$\u-POST['data']
时已经存在

看看这个答案:


顺便说一句,您可以将fopen/fwrite/fclose替换为

外观相关:php代码中的
parse_json
是什么?这不是一个内置的php函数…听起来很有趣,我会怎么做,它会影响其他任何事情吗?如果你需要了解更多关于魔术引号的知识[请阅读这里]。魔术引号是不好的,如果你有权访问你的php.ini,你应该关闭它们,这似乎是问题所在。现在调查一下,谢谢!谢谢,我没有看到其他问题,但它成功了!
{
            "title"         :   "Armstrong",
            "description"   :   "The Armstrong Family",
            "patriarchID"   :   "id1",
            "latestID"      :   7,
            "members"       :   [
                {
                    "name"  :   "Grandad",
                    "id"    :   "id1",
                    "children": ["id2","id3"]
                },
                {
                    "name"  :   "Dad",
                    "id":       "id2",
                    "children": ["id4","id5","id6","id7"]
                },
                {
                    "name"  :   "Uncle",
                    "id"    :   "id3"
                },
                {
                    "name"  :   "Child",
                    "id" :  "id4"
                },
                {
                    "name"  :   "Child",
                    "id"    :   "id5"
                },
                {
                    "name"  :   "Child",
                    "id"    :   "id6"
                },
                {
                    "name"  :   "Child",
                    "id"    :   "id7"
                }

            ]
}