2012-02-20 32 views
0

で私はここで非常に基本的な例のサイトを持っています。私は他のユーザーのためにこれをここに保管します。デコードJSONエンコードされた文字列リテラルバックhtmlの値にはJavaScript

「メンバー」を入力すると、JSONオブジェクトとしてデータが戻されます。これはコンソールにあります。問題は、著者の文字列をリテラルHTMLとしてデコードすることができないことです。

手動で文字列を置換する必要がありません(>などの代わりに>を置き換えます)、自動的にエンコードを行う方法があります。

オリジナル問題: http://simondouglas.com/stackexchange/jsonencodeproblem/bad.php
(ソースの貼り付けが機能しません)ライン60から始まる

ソリューション:

 <dt> 
     <strong>${name}</strong><br/> 
     {{html getAuthorLink()}} 
     </dt> 

あなたが内側に渡すことができる属性がありますプレーンテキストの代わりにhtmlを使用するテンプレート。

+0

ここにコードを投稿できますか? –

+1

だから、これらのオブジェクトの 'author'フィールドが正確に間違っていますか?有効なHTMLだけを値として見ることができます。 –

+0

ここに元のコードを投稿する必要があります。他の人がこの質問を表示すると、何が起こっているのかがわかります。テストサイトが更新されたので、質問は意味をなさない。 –

答えて

0

簡単な答えは、値を自分でデコードする必要があるということです。 escape()/unescape()であり、現代の同等のものはURIエンコーディングであり、HTMLエンコーディングではありません。

最も一般的な方法は、文字列のエンコードされた値を置き換えることですが、パフォーマンスが本当に問題にならない場合や、ブラウザの実装に依存する場合は、さまざまなDOMの構築と抽出のテクニックを使用できます。

0

これを試してください。 http://phpjs.org/functions/html_entity_decode:424

javascript用のphpのhtml_entity_decodeのポートです。あなたが求めていることをしなければならない。

それはここでの問題は、jQueryの-TMPLであるように思え

http://phpjs.org/functions/get_html_translation_table:416

+0

これはうまくいくように見えますが、そうではありません。現在のテストサイトが変更されました。あなたのご意見ありがとうございます。 – Simon

0

^の依存性であるようにも、このが必要になります。それはデータをHTMLではなくテキストとして扱います。データは最初にエンコードされていないので、jQuery-tmlpはエンコードしてから印刷します。

HTMLを返す代わりに、テンプレートにHTMLを追加して、JSONにリンクと名前を返し、それに応じて入力します。

<dt> 
    <strong>${name}</strong><br/> 
    <a href="${authorLink}">${authorName}</a> 
</dt> 

かのjQueryを使用してHTMLを構築し、appendでそれを追加します。

+1

あなたはまったく正しいので、私にこれをもたらした別の検索につながります:http://api.jquery。com/template-tag-html/ テンプレートに渡すことができるパラメータがあります。私はテストサイトを更新しました。 – Simon

+0

ああ、ありがとうございました。 – Simon

+0

@Simon:歓迎します:-) –

関連する問題