javascript
  • json
  • escaping
  • 2016-10-17 14 views -1 likes 
    -1

    配列をjsonとして保存し、ロード時に再度解析しています。しかし、一重引用符と二重引用符の両方でHTMLを追加した後、これは動作を停止しました。一重引用符と二重引用符を含むJSON.parse文字列

    引用符をエスケープするにはどうすればよいですか?

    JSON.parse('[["",null,null,null,null,null,"","","<span onclick=insertRow()><i class='fa fa-plus-circle fa-lg'></i></span>"]]'); 
    
    uncaught SyntaxError: missing) after argument list 
    

    EDIT:

    私の文字列がJSON.stringifyを使用してデータベースに保存されます。これは、次の形式で終わる:

    は、それが再び、私はそれが好きですかイム・ロードは、以下の
    [["ad",null,true,false,true,false,"","","<span onclick=insertRow()><i class='fa fa-plus-circle fa-lg'></i></span>"]] 
    

    とき:イムは、保存する前に単一引用符をエスケープ

    var phpsave = JSON.parse('<?php echo $result->save; ?>'); 
    

    場合は、エスケープはちょうどロード時にdissappears。 。

    +1

    これはJSONとは関係ありません。これは無効な文字列リテラルです。 – Bergi

    +1

    JSONをどのようにエンコードしていますか?どのようにロードしていますか?一重引用符で囲まれた文字列には、一重引用符で囲まれたJavascriptリテラルがあるため、問題が発生します。実際には実際にJSON文字列をロードする方法はそれほど疑わしいです! – deceze

    +0

    単純な配列リテラルではなく、JSコードでJSON文字列を使用しているのはなぜですか? – Bergi

    答えて

    -1

    あなたはあなたが動的に酸っぱいJavascriptを生産している

    var r = JSON.parse('[["",null,null,null,null,null,"","","<span onclick=insertRow()><i class=\'fa fa- plus - circle fa- lg\'></i></span>"]]'); 
    
    +0

    保存する前にこれを行うと、再度読み込むと\が消えます。私の編集内容をご覧ください。 – user2806026

    1

    ようにそれを逃れることができますCEコード。あなたが作っているものが構文的に妥当であることを保証する必要があります。 PHPから有効なJavaScriptリテラルを生成する最も簡単な方法は、json_encodeを使用している:

    var phpsave = JSON.parse(<?php echo json_encode($result->save); ?>); 
    // look ma, no quotes! ^         ^
    

    しかし、待って、あなたはJavaScriptにJSONを渡すことはありませんか? JSONはすでに有効なJavascriptではありませんか?なぜ、はい、そうです。だから、あなたはそのステップを省略することができます。もちろん

    var phpsave = <?php echo $result->save; ?>; 
    

    を、あなたはランダムなJavascriptのコードの出力を開始する前に、あなたが本当に最初にここに有効なJSONを渡ししていることを保証したい場合があります。

    +1

    +1は正しいアプローチですが、[実際にはJSONは常に有効なJSではありません](http://stackoverflow.com/q/23752156/1048572)。そして、それがエコーされる場所によっては、 ''のようなものをエスケープする必要があるかもしれません。 – Bergi

    +0

    それを指摘してくれてありがとう。 – deceze

    関連する問題