2011-09-14 9 views
2

JQueryとPHPを使用してJSONファイルの変更を保存しようとしていますが、JSONを保存するときにPHPスクリプトが文字をエスケープしているようですそれを再び読んでください。ファイルに書き込むときにPHPがJSON文字列をエスケープするのをやめます

私は、次のコードを使用してsave.phpするJSONオブジェクト( '家族')を渡している:そして、save.phpは、次のコード

でarmstrong.jsonするJSONデータを書き込む

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


     success: function(msg){ 
      console.log(data); 
    } 
}); 
    } 

{\"title\":\"Armstrong\",\"description\":\"The Armstrong Family\",\"patriarchID\":\"id1\",\"latestID\":8,\"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\"},{\"name\":\"a\",\"id\":\"id8\"}]}{\"title\":\"Armstrong\",\"description\":\"The Armstrong Family\",\"patriarchID\":\"id1\",\"latestID\":9,\"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\"},{\"name\":\"a\",\"id\":\"id8\"},{\"name\":\"a\",\"id\":\"id9\"}]}{\"title\":\"Armstrong\",\"description\":\"The Armstrong Family\",\"patriarchID\":\"id1\",\"latestID\":10,\"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\"},{\"name\":\"a\",\"id\":\"id8\"},{\"name\":\"a\",\"id\":\"id9\"},{\"name\":\"a\",\"id\":\"id10\"}]} 

すべてのアイデアは、私はそれがESCAPI停止することができますどのように次のようにファイルが書き出されているが

<?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" 
       } 

      ] 
} 
+1

ではfopen/fwriteの/ fcloseのを置き換えることができますが、関連になります。http://stackoverflow.com/questions/7417987/slash-appended-to-all- my-posts/7418026#7418026 – arnaud576875

+0

あなたのPHPコードで 'parse_json'とは何ですか?これはphp関数で構築されたものではありません... – Paulpro

答えて

1

magic_quotes_gpcが有効で、$data = $_POST['data']の時にスラッシュがすでに存在しています。

この回答を参照してください:Slash appended to all my posts

ところで、あなたはfile_put_contents

+0

ありがとう、他の質問を見ていないが、それはトリックをした! –

4

のようになります。たぶん、あなたはあなたのphp.iniでmagic quotesオンになっています。あなたはそれらをオフにする必要があります。これはエスケープを説明します

EDIT - あなたが魔法の引用符の詳細を知る必要がある場合hereを読んでください。 php.iniにアクセスすると魔法の引用符が悪くなります。

+0

面白いと思いますが、どうすればいいでしょうか? –

+0

あなたが魔法の引用についてもっと知りたい場合は[こちらを読む] http://www.php.net/manual/en/security.magicquotes.php。魔法の引用符が悪いです、あなたがあなたのphp.iniにアクセスできる場合は、それらをオフにする必要があります –

+0

それは問題であるようです。彼らを見て、感謝! –