C'est, en substance, ce que AJAX es pour . Votre page se charge, et vous ajoutez un événement à un élément. Lorsque l'utilisateur déclenche l'événement, par exemple en cliquant sur un élément, votre Javascript utilise la fonction Objet XMLHttpRequest pour envoyer une requête à un serveur.
Une fois que le serveur a répondu (vraisemblablement avec un résultat), une autre fonction/événement Javascript vous permet de travailler avec ce résultat, y compris de le coller dans la page comme n'importe quel autre élément HTML.
Vous pouvez le faire "à la main" avec du simple Javascript , ou vous pouvez utiliser jQuery. En fonction de la taille de votre projet et de votre situation particulière, il peut être plus simple d'utiliser simplement Javascript .
Plain Javascript
Dans cet exemple très basique, nous envoyons une requête à myAjax.php
lorsque l'utilisateur clique sur un lien. Le serveur va générer du contenu, dans ce cas "hello world !". Nous allons mettre dans l'élément HTML avec l'id output
.
Le javascript
// handles the click event for link 1, sends the query
function getOutput() {
getRequest(
'myAjax.php', // URL for the PHP file
drawOutput, // handle successful request
drawError // handle error
);
return false;
}
// handles drawing an error message
function drawError() {
var container = document.getElementById('output');
container.innerHTML = 'Bummer: there was an error!';
}
// handles the response, adds the html
function drawOutput(responseText) {
var container = document.getElementById('output');
container.innerHTML = responseText;
}
// helper function for cross-browser request object
function getRequest(url, success, error) {
var req = false;
try{
// most browsers
req = new XMLHttpRequest();
} catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
// try an older version
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
if(req.readyState == 4) {
return req.status === 200 ?
success(req.responseText) : error(req.status);
}
}
req.open("GET", url, true);
req.send(null);
return req;
}
Le HTML
<a href="#" onclick="return getOutput();"> test </a>
<div id="output">waiting for action</div>
Le PHP
// file myAjax.php
<?php
echo 'hello world!';
?>
Essayez-le : http://jsfiddle.net/GRMule/m8CTk/
Avec une bibliothèque javascript (jQuery et al)
On peut dire que cela représente beaucoup de code Javascript. Vous pouvez le raccourcir en resserrant les blocs ou en utilisant des opérateurs logiques plus laconiques, bien sûr, mais il y a encore beaucoup de choses à faire. Si vous prévoyez de faire beaucoup de ce type de choses dans votre projet, vous feriez mieux d'utiliser une bibliothèque javascript.
En utilisant le même HTML et PHP que ci-dessus, voici votre script complet (avec jQuery inclus dans la page). J'ai un peu resserré le code pour être plus cohérent avec le style général de jQuery, mais vous comprenez l'idée :
// handles the click event, sends the query
function getOutput() {
$.ajax({
url:'myAjax.php',
complete: function (response) {
$('#output').html(response.responseText);
},
error: function () {
$('#output').html('Bummer: there was an error!');
}
});
return false;
}
Essayez-le : http://jsfiddle.net/GRMule/WQXXT/
Ne vous précipitez pas tout de suite sur jQuery : ajouter une bibliothèque, quelle qu'elle soit, revient à ajouter des centaines ou des milliers de lignes de code à votre projet, aussi sûrement que si vous les aviez écrites. À l'intérieur du fichier de la bibliothèque jQuery, vous trouverez un code similaire à celui du premier exemple, ainsi qu'un fichier beaucoup plus . C'est peut-être une bonne chose, peut-être pas. Planifiez, et tenez compte de la taille actuelle de votre projet et des possibilités d'expansion futures, ainsi que de l'environnement ou de la plate-forme cible.
Si c'est tout ce que vous avez besoin de faire, écrivez le javascript simple une fois et vous avez terminé.
Documentation
4 votes
Tout simplement non, il n'y a aucun moyen de le faire, sauf à appeler la méthode requise en utilisant ajax.
9 votes
Vous savez : PHP fonctionne sur le serveur, mais JS sur le client ? Ce site no puede fonctionnent de cette façon.
1 votes
Attends, attends, n'est-ce pas
<?php query("hello"); ?>
rendu par php quand la page est chargée ? si oui, il peut obtenir la sortie dequery("hello")
dans la fonction js.0 votes
Je sais que le code ci-dessus est faux, mais je l'ai juste utilisé pour montrer ce que je veux
1 votes
Duplicata possible de Fonctions Javascript et PHP
0 votes
J'ai trouvé ça : myitviewoflife.blogspot.com/2010/06/ mais je ne sais pas vraiment comment l'utiliser
0 votes
@brian-driscoll Je ne crois pas que cette question soit une copie EXACTE de la question suivante stackoverflow.com/questions/8856961/ car la question originale concerne l'utilisation d'un méthode de classe php dans le javascript et cette question porte sur scripting général php en javascript . Le site FERMÉ est beaucoup plus complexe car elle nécessite de passer un objet PHP à javascript tout en conservant ses méthodes. Je crois fermement que le FERMÉ La question devrait être rouverte et traitée, car je suis également à la recherche d'une solution.