3

Javascript でスラッシュを削除するのに問題があります。

JSON 経由で HTML が送信されてきたので、スラッシュのエスケープを取り除く必要があります。

これが私が今持っているものですが、うまくいかないようです-まったく...

obj.embed_code = obj.embed_code.replace(/\\/g, '');

そのオブジェクト内の HTML は YouTube からの埋め込み iframe ですが、引用符がエスケープされているため、404 ページを含む iframe になります。

これを行う正しい方法は何ですか?

出力がどのように見えるかの例を次に示します...

<iframe width=\\\"420\\\" height=\\\"315\\\" src=\\\"http:\/\/www.youtube.com\/embed\/MD61itbPNEY\\\" frameborder=\\\"0\\\" allowfullscreen><\/iframe>

さらに、JSON が取り出されているページは次のとおりです。生の様子を確認できます...

http://bit.ly/UxuvfL

4

3 に答える 3

1

データが真の JSON である場合、JSON パーサーを使用するのが正しい方法です。バックスラッシュを単純に削除するだけではなく、JSON の解析が必要になるからです。次のようなものを考えると

{"content":"<p>CleverStuff\u2122<\/p>"}

JSON.parse(theData).contentあなたに与えるだろう

<p>CleverStuff™&lt;/p>
于 2012-10-23T15:30:03.880 に答える
0

試す

obj.embed_code = obj.embed_code.replace(/\\\//g, "/");

一致\/するため、エスケープされていないインスタンスを誤って削除することはありません/

于 2012-10-23T15:18:28.403 に答える
-1

あなたの JSON は有効です。jsonlint.comで確認しました。

これにより、embed_code がクリーンアップされます。

obj.embed_code = obj.embed_code.replace(/\\\\\\"/g, '"').replace(/\\\//g, "/");

私にとってはうまくいきます:

> var a = "width=\\\\\\\"420 src=\\\\\\\"http:\\/\\/www"
"width=\\\"420 src=\\\"http:\/\/www"
> a.replace(/\\\\\\"/g, '"').replace(/\\\//g, "/")
"width="420 src="http://wwww"

しかし、私はこれをお勧めします:

$.getJSON('http://webiwave.com/includes/checkForButton.php?id=922', function (data){
    console.log(data.embed_code.replace(/\\\"/g, '"') ) 
});

あなたのウェブページでこれを実行すると、きれいな html が得られます。

<iframe width="420" height="315" src="http://www.youtube.com/embed/MD61itbPNEY" frameborder="0" allowfullscreen></iframe>
于 2012-10-23T15:16:00.733 に答える