JavaScript asynchrone peut-il remplacer Ajax?

Question

JavaScript asynchrone, tel qu'il est utilisé par Analytics de Google, permet d'exécuter des scripts de façon différée sans ralentir le chargement de la page. Le script s'exécute quand il est disponible et il peut provenir d'un autre site, en l'occurence du service de statistiques en ligne de Google quand à Analytics.
Cette technologie est-elle une alternative à Ajax?

Réponse courte

Après quelques tests (voir dernier lien en bas de page), on peut voit que l'on peut se dispenser de l'objet XMLHttpRequest pour charger des données sur le serveur, ou exécuter des scripts coté serveur, cela à partir de JavaScript. Et le mode asynchrone ajoute la fluidité permise par Ajax.
C'est donc une alternative à Ajax mais limitée. Et pour utiliser des fichiers XML il faut ajouter un support de ce format alors qu'il existe nativement dans l'objet XHR.

Réponse longue

JavaScript peut exécuter des scripts PHP et charger des données sur le serveur. Exemple détaillé...

Lire des données sur le serveur

Le fichier JavaScript contient du code PHP, il a donc l'extension PHP:

<script src="javascript.php" type="text/javascript"></script>

La page HTML utilise la fonction hello qui est définie dans ce fichier JavaScript:

<form name="form1" method="post" action="">
<input type="button" name="Submit" value="message" onclick="hello()">
</form>

Le fichier javascript.php contient du code PHP:

<?php $x="Hello World!"; ?>
function hello()
{
alert("<?php echo $x ?>");
}

Le code PHP est exécuté sur le serveur avant que le fichier JavaScript ne soit chargé. On peut le développer pour accéder à des fichiers ou une base de donnée sur le serveur et retourner les résultats.

Passer des paramètres

L'objet XMLHttpRequest peut envoyer des données à un script coté serveur. On fait de même avec un simple formulaire HTML.

<form name="form1" method="post" action="script.php">
  <input type="text" name="message" value="mon message">
<input type="submit" name="Submit" value="Envoyer">
</form>

Le script script.php récupère les données du formulaire:

$y = $_POST['message'];

Le script qui reçoit les données peut alors effectuer un traitement qui produira des fichiers réutilisables de façon dynamiques par la page HTML. Ce ne sera pas aussi simple qu'avec Ajax.

Conclusion

JavaScript asynchrone est une alternative à Ajax dans certains cas et est un moyen d'alléger les pages. Il ne permet pas une interactivité totale avec le serveur comme le fait l'objet XMLHttpRequest.

Ressources
© 2009-2012 Xul.fr