Récupérer du contenu

Parent Previous Next


Récupérer du contenu


Le chargement de données via une iframe a un gros avantage : il est possible de charger n'importe quoi comme données. Ça peut être une page Web complète, du texte brut ou même du Javascript, comme le format JSON.


Récupérer des données Javascript

Si on reprend l'exemple vu précédemment, avec le callback, il est possible de récupérer facilement des données Javascript, comme un objet. Dans ce cas, il suffit d'utiliser du PHP pour construire un objet qui sera transmis en paramètre de la fonction de callback, comme ceci :

<?php

    $fakeArray = array('Sébastien', 'Laurence', 'Ludovic');

?>

 

<script>

    window.top.window.trigger(['<?php echo implode("','", $fakeArray) ?>']);

</script>


Ici, un tableau Javascript est construit via le PHP et envoyé à la fonction trigger() en tant que paramètre.


Exemple complet

<form id="myForm" method="post" action="request.php" target="myFrame">

    <div>

        <label for="nick">Votre pseudo :</label>

        <input type="text" id="nick" name="nick" />

 

        <input type="button" value="Envoyer" onclick="sendForm();" />

    </div>

</form>

 

<iframe src="#" name="myFrame" id="myFrame"></iframe>

 

<script>

 

function sendForm() {

    var nick = document.getElementById("nick").value;

 

    if (nick) { // Si c'est OK

        document.getElementById("myForm").submit(); // On envoie le formulaire

    }

}

 

function receiveData(data) {

    alert('Votre pseudo est "' + data + '"');

}

 

</script>


Et maintenant la page PHP :

<script>

 

window.top.window.receiveData("<?php echo htmlentities($_POST['nick']); ?>");

 

</script>



Ce script ne fait que récupérer la variable $_POST['nick'], pour ensuite appeler la fonction receiveData() en lui passant le pseudo en paramètre. La fonction PHP htmlentities() permet d'éviter que l'utilisateur insère d'éventuelles balises HTML potentiellement dangereuses telles que la balise <script>. Alors, certes, ici l'insertion de balise ne pose pas de problème puisque l'on affiche le pseudo dans une fenêtre alert(), mais mieux vaut prévenir que guérir, non ?


Créé avec HelpNDoc Personal Edition: Outil de création d'aide complet

Site à deux balles