Tout d'abord, il est impossible d'appeler des fonctions PHP directement à partir de JavaScript, ou vice versa. C'est parce que PHP est un script côté serveur, s'exécutant sur le serveur, et JavaScript est un script côté client, exécuté sur le navigateur.
Mais il y a une solution, cependant, en utilisant une technique appelée "AJAX" (A synchrone J avascript un e X ML), qui peut être utilisé pour envoyer une demande à un serveur de JavaScript.
Par exemple, en utilisant une page « utilisateur » que l'utilisateur voit, et une « demande » qui est appelé à partir du code JavaScript, je pourrais écrire le code suivant:
userpage.php:
<!-- JavaScript code -->
<script type="text/javascript">
function sendRequestToServer()
{
// The XMLHttpRequest object is used to make AJAX requests
var ajax = new XMLHttpRequest();
// The onreadystatechange function will be called when the request state changes
ajax.onreadystatechange = function()
{
// If ajax.readyState is 4, then the connection was successful
// If ajax.status (the HTTP return code) is 200, the request was successful
if(ajax.readyState == 4 && ajax.status == 200)
{
// Use ajax.responseText to get the raw response from the server
alert(ajax.responeText);
}
}
// Open the connection with the open() method
// (the third parameter is for "asynchronous" requests, meaning that
// JavaScript won't pause while the request is processing).
ajax.open('get', 'requestpage.php', true);
// Send the request using the send() method
ajax.send();
}
</script>
<!-- HTML code -->
<button onclick="sendRequestToServer();">Send request!</button>
requestpage.php (la sortie de cette page sera retourné à votre code JavaScript):
<?php
echo "Hello World!";
?>
Cet exemple, lorsque le bouton est enfoncé, envoie une requête HTTP au serveur demandant la page de requête .php, où le serveur exécuterait du code côté serveur et ferait écho au résultat. Le navigateur prend alors les données qu'il a reçues du serveur et les utilise dans le script - dans ce cas, alert()
.
Quelques ressources:
Vous pouvez également vérifier l'encodage JSON, qui est la méthode très courante d'envoyer des objets et des réseaux entre les clients et les serveurs (en particulier lors de l'utilisation d'AJAX):
(Désolé pour cette longue réponse, l'espoir qu'il a aidé bien)