2012-02-29 57 views
14

タイトルごとに、HTMLをJSONに入れるのは良い方法ですか?私は、リストは、ユーザの入力から来ているカスタムドロップダウンを持っていると思いますので、私はこれを行うために必要な理由はある、とJSONはそうのようになります。JSONへのHTMLの埋め込み

{ listTitle: 'Tasks', listHtml: '<ul><li></li>...</ul>' } 

と私は保つ(次のようにforeachのを持っています心の中で、これは私のコードのバージョンを剥ぎ取られ、

$list = /** Code to grab 'Tasks' list and its title from mysql **/; 
$title = 'Tasks'; 
$listHtml = ''; 
foreach($list as $content) { $listHtml .= '<li>' . htmlspecialchars($content, ENT_QUOTES, 'UTF-8') . '</li>'; } 

exit(json_encode(array(
    'title' => $title, 'listHtml' => '<ul>' . $listHtml . '</ul>' 
))); 

私の心配が壊れるかもしれないいくつかの特殊文字があるかもしれないということである)の検証が整備されているが、この質問のために私はそれらを取り出しJSON文字列。助けてください。

+0

単なる文字列です。文字列はJSONでサポートされています。 http://json.org/ – hakre

+0

@andreas:データからプレゼンテーションを分離することは、JSONのようなフォーマットの主なポイントと思われます。あなたは他のウェブサイトやユーザーがこのデータを側面から取り込み、あなたのウェブサイトのそれ以外のものを使うことを許可しますか?もしそうなら、htmlで追加するとそれが損なわれます。そうでない場合は、これがあなたのウェブページを構築するのに役立つだけのjsonフィードであれば、それはあなた次第です。 –

+0

@bob Eh?私は、あなたが言及したようなものについては、クロスドメインポリシーが適切だと思いましたか?だから私がスクリプトにコールバックサポートを喜んで書かない限り、私は大丈夫でしょうか?教えてください –

答えて

18

あなたはそれを最初にやっていないでしょうし、確かに最後ではありません。

本当に質問に答えるには、プロトコル/標準に従っていて、それを壊さないと仮定すると(たとえば、エスケープせずに文字列の引用符を含めて)、あなたはうまくいくはずです。 json_encodeはすごくうまくやっていますが、@KolinkはUTF8にエンコードしていることを確認しています。そうしないとUnicode文字が途切れて出力が空になることがあります。

これを超えると、それを使用するプログラマーの好みです。いくつかはそれを避け、ページ上にUIを維持しているものもあれば、サーバーがUIを生成してJavaScriptにダンプするだけのものもあります。

+0

!確かに有用で徹底的な答え: –

+0

フォローアップとして[ノックアウトJS](http:// knockoutjs。com /)は、使いやすいテンプレートシステムを使用して、JSONデータとUIの統合を非常に簡単に収束させます。 –

11

何も問題はありません。とにかくjson_encodeはすべての文字をエスケープするので、注意する必要があるのは文字列がutf8_encodeであることを確認することだけです。

0

もちろん、値をJSONの配列として簡単に渡して、HTMLレンダリングコードをクライアントに置くこともできます。サーバーサイクル、帯域幅バイト、およびロジックプレゼンテーションブレンディングを節約できます。

関連する問題