J'ai un script php qui génère du contenu HTML. Existe-t-il un moyen de renvoyer ce contenu HTML via JSON à ma page Web à partir du script php?
Oui, vous pouvez utiliser json_encode
pour prendre votre chaîne HTML et l'échapper si nécessaire.
Notez que dans JSON , l'élément de niveau supérieur doit être un tableau ou un objet (ce n'est plus vrai) , ce ne peut pas être seulement une chaîne. Vous voudrez donc créer un objet et faire de la chaîne HTML une propriété de l'objet (probablement le seul), de sorte que le JSON résultant ressemble à quelque chose comme:
{"html": "<p>I'm the markup</p>"}
Toutes les données de chaîne doivent être codées en UTF-8.
$out = array(
'render' => utf8_encode($renderOutput),
'text' => utf8_encode($textOutput)
);
$out = json_encode($out);
die($out);
Juste pour développer @ T.J. La réponse de Crowder.
json_encode
fonctionne bien avec de simples chaînes html, d'après mon expérience cependant json_encode
devient souvent confus par (ou il devient assez difficile de s'échapper correctement) un html imbriqué complexe plus long mélangé avec du php. Deux options à considérer si vous êtes dans cette position sont les suivantes: encoder/décoder le balisage d'abord avec quelque chose comme [base64_encode][1]
/ décoder (pas mal de performances), ou (et peut-être de préférence) être plus sélectif dans ce que vous passez via json, et générer à la place le balisage nécessaire côté client.
Fait comme ça
Mettez d'abord tout votre contenu HTML dans un tableau, puis faites json_encode
$html_content="<p>hello this is sample text";
$json_array=array(
'content'=>50,
'html_content'=>$html_content
);
echo json_encode($json_array);
En PHP:
$data = "<html>....";
exit(json_encode($data));
Ensuite, vous devez utiliser AJAX pour récupérer les données et faire ce que vous voulez avec elles. Je suggère d'utiliser JQuery: http://api.jquery.com/jQuery.getJSON/
Vous pouvez l'envoyer sous forme de chaîne, pourquoi pas. Mais vous vous trompez probablement un peu sur JSON ici car, si je comprends bien, le point est d'envoyer uniquement les données nécessaires et de les envelopper dans HTML sur le client.