AJAX peut être utilisé pour communiquer dynamiquement avec la base de données.
L'exemple suivant montre comment une page Web lit les informations de la base de données via AJAX : Veuillez sélectionner un client dans la liste déroulante ci-dessous :
Lorsque l'utilisateur sélectionne un client dans la liste déroulante ci-dessus, une fonction nommée « showCustomer() » est exécutée. Cette fonction est déclenchée par l'événement "onchange" :
fonction showClient ( str ) { var xmlhttp ; ( str == " " ) { document getElementById ( " txtHint " ) innerHTML = " " ; si ( fenêtre . XMLHttpRequest ) { // Code d'exécution du navigateur IE7+, Firefox, Chrome, Opera, Safari xmlhttp = nouveau XMLHttpRequête ( ) ; autre { // Code d'exécution du navigateur IE6, IE5 xmlhttp = nouveau ActiveXObject ( " Microsoft.XMLHTTP " ) ; xmlhttp.onreadystatechange = fonction ( ) { si ( xmlhttp . readyState == 4 && xmlhttp . status == 200 ) { document getElementById ( " txtHint " ) innerHTML = xmlhttp . } xmlhttp .La fonction showCustomer() effectue les tâches suivantes :
Vérifier si un client a été sélectionné
Créer un objet XMLHttpRequest
Exécuter la fonction créée lorsque la réponse du serveur est prête
Envoyer la requête vers un fichier sur le serveur
Notez que nous avons ajouté un paramètre q à l'URL (avec le contenu du champ de saisie)
La page du serveur appelée par le JavaScript ci-dessus est un fichier PHP nommé "getcustomer.php".
Il est également facile d'écrire des fichiers serveur en PHP ou dans d'autres langages serveur. Voir l'exemple correspondant écrit en PHP.
Le code source dans « getcustomer.php » est chargé d'interroger la base de données et de renvoyer les résultats dans un tableau HTML :
<%response.expires=-1sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="sql=sql & "'" & request.querystring("q") & "'"set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs=Server.CreateObject( "ADODB.recordset")rs.Open sql,connresponse.write("<table>")do jusqu'à rs.EOF pour chaque x dans rs.Fields réponse.write("<tr><td><b>" & x.name & "</b></td>") réponse.write("<td>" & x. valeur & "</td></tr>") suivant rs.MoveNextloresponse.write("</table>")%>