web-dev-qa-db-ja.com

JSONを介してHTMLコードを送信する

HTMLコンテンツを生成するphpスクリプトを持っています。そのHTMLコンテンツをJSON経由でPHPスクリプトからWebページに送り返す方法はありますか?

28
Hirvesh

はい、使用できます json_encode HTML文字列を取得し、必要に応じてエスケープします。

[〜#〜] json [〜#〜] では、最上位の項目mustが配列またはオブジェクトであることに注意してください (それはもはや真実ではありません)、単なる文字列にすることはできません。したがって、オブジェクトを作成し、HTML文字列をオブジェクトのプロパティ(おそらく唯一のもの)にすると、結果のJSONは次のようになります。

{"html": "<p>I'm the markup</p>"}
27
T.J. Crowder

すべての文字列データはUTF-8でエンコードされている必要があります。

$out = array(
   'render' => utf8_encode($renderOutput), 
   'text' => utf8_encode($textOutput)
);

$out = json_encode($out);
die($out);
2
blumanski

@ T.Jを展開するだけです。クラウダーの答え。

json_encodeは単純なhtml文字列でうまく機能しますが、私の経験ではjson_encodeはよく混同されます(または適切にエスケープすることが非常に難しくなります)。この位置にいる場合に考慮すべき2つのオプションは、最初にマークアップを[base64_encode][1]/ decode のようなものでエンコード/デコードすることです(かなりパフォーマンスが低下します)。 )jsonを介して渡すものをより選択的にし、代わりにクライアント側で必要なマークアップを生成します。

2
orionrush

こうする

最初にすべてのHTMLコンテンツを配列に入れてから、json_encode

$html_content="<p>hello this is sample text";
$json_array=array(

'content'=>50,
'html_content'=>$html_content
);
echo json_encode($json_array);
2
Lead Developer

PHPの場合:

$data = "<html>....";
exit(json_encode($data));

次に、AJAXを使用してデータを取得し、必要な処理を行います。JQueryを使用することをお勧めします。 http://api.jquery.com/jQuery.getJSON/

1

それを文字列として送信できます。しかし、私が理解している限り、必要なデータのみを送信し、それらをクライアント上のHTMLにラップすることであるため、ここでJSONを使用するのはおそらく間違いです。

1
Jan Zyka