1

jquery_form プラグインを使用して、html フォームを php に送信します。その後、php は JSON オブジェクトを返します。

これがPHPが返すものです

$content="<div>ABC</div>";
$json = json_encode(array("content" => $content));
...Here I also send $json to Mysql database...
echo $json;

次に、Javascript に何が返ってくるかを警告します。

今Mysqlで私{"content":"<div>ABC</div>"}は正しいように見えます

しかし、Javascriptアラートでは次のようになります{"content":"<div>ABC&lt;\/div&gt;"}</div>

これは、このオブジェクトを解析する jQuery.parseJSON に問題を引き起こします。

通常の JSON を JavaScript に配信するのを手伝ってください。

アップデート

ここでphpファイルをテストしましたhttp://codepad.viper-7.com/EBSM8G にこのコードを入れます

<?php
   $content="<div>ABC</div>";
   $json = json_encode(array("content" => ".$content."));
   echo $json;

そして結果はこんな感じ

{"content":".

ABC<\/div>."}

だから問題は何ですか ????よくわかりません :(

UPDATE 2 これに1行を変更する提案されたヒントを試す

$json = json_encode(array("content" => $content,JSON_UNESCAPED_SLASHES));

そして、アラートは私にこれを与えます{"content":"<div>ABC&lt;\/div&gt;","0":64}</div>

4

4 に答える 4

1

これは今は役に立たないかもしれませんが、json 経由で html を送信することを再考したいと思います。ページの大部分を送信する場合、このような単純な div ラッパーは不要であり、非常に面倒になります。

ページのリロード時に php を使用してページ上に直接 HTML を構築するか、ajax を使用している場合は、コンテンツ クライアント側の構築に必要な変数を送信するだけです。この疎結合のアプローチは、はるかに柔軟です。

元の投稿が非常に抽象的で簡潔であるため、より具体的な例は扱いにくいですが、フォームが名前と年齢である場合、次のようなjsonオブジェクトを送信します

{'name':'codemonkey', 'age':21}

JSを使用して、次のようなjQueryにHTMLを入力します

$('.theName').val( jsonData.name )
于 2012-12-08T13:14:35.127 に答える
1

HTML

開始 div タグはブラウザによって解析されるため表示されません (そこにはありますが表示されません - ソースを確認してください)。(追加のフラグなしで) スラッシュがエスケープされており、終了 div タグとして解析されていないため、終了タグが表示されます。ブラウザはおそらくすぐに div タグを閉じて、改行を行います (div はブロック要素です)。

JS

Javascript は完全に正常に動作します http://codepad.viper-7.com/inVZmv

さらに、JavaScript 内で使用する場合は既に JSON であるため、文字列を解析する必要はありません (引用符で囲む場合を除きます)。次の例を考えてみましょう: http://codepad.viper-7.com/SK5KaK

于 2012-12-08T12:24:15.167 に答える
0

送信して$contentいる場合、なぜ配列を使用しているのですか?

これを試して

   $json = json_encode($content); 
于 2012-12-08T17:56:41.863 に答える
0

header() 関数内で適切なエンコーディングを使用してみてください。

このようなもの: http://codepad.viper-7.com/zZxzBd

于 2012-12-08T12:21:02.807 に答える