web-dev-qa-db-fra.com

Utiliser wp_send_json pour retourner du HTML

Je ne comprends pas comment renvoyer correctement le code HTML via AJAX.

J'ai cette routine

function DisplayEventInfoBox()
{    ?>
    <div id="eventInfo">
    <div class="avail-from cart-right">

    <?php   
    and so on...
}

Si j'inclus ceci dans un appel AJAX et que la fin de la routine est un die (), l'objet de réponse contient le code HTML, que je peux utiliser à ma guise.

function myAJAXFn() {
    DisplayEventInfoBox($my_page, $shipHelper);
    die();
}

Je souhaite envoyer des informations supplémentaires, en utilisant par exemple wp_send_json_success ou une autre variable.

Ce code renvoie le code HTML avec le tableau JSON ajouté à la fin. Je voudrais un créer un objet JSON où je peux accéder à ma propriété de page et le HTML. Quelle est la meilleure façon de faire cela?

function myAJAXFn() {
    DisplayEventInfoBox($my_page, $shipHelper);
    wp_send_json_success( array('page'=>$myPage) );
}
4
strattonn

Je ne sais pas ce que les variables $ my_page, $ my_page ou $ shipHelper sont censées faire, mais vous pouvez utiliser un tampon de sortie pour capturer la sortie de votre fonction DisplayEventInfoBox. Vous pouvez essayer ce qui suit:

function myAJAXFn() {
    ob_start();
    DisplayEventInfoBox($my_page, $shipHelper);
    $my_html = ob_get_contents();
    ob_end_clean();
    wp_send_json_success( array('page'=>$my_html) );
}
3
czerspalace