AJAX Exemple de base de données
AJAX peut être utilisé pour une communication interactive avec une base de données.
Exemple de base de données AJAX
L'exemple suivant montre comment une page web peut lire des informations dans une base de données à l'aide d'AJAX :
Exemple
Exemple expliqué - Page HTML
Lorsqu'un utilisateur sélectionne un client dans la liste déroulante ci-dessus, une fonction nommée "showCustomer()" est exécutée. La fonction est déclenchée par l'événement "onchange" :
<html>
<head>
<script>
function showCustomer(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code pour IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code pour IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcustomer.asp?q="+str,true);
xmlhttp.send();
}
</script>
</head
<body>
<form>
<select name="customers" onchange="showCustomer(this.value)">
</select>
</form>
<br>
</body>
</html>
Explication du code source :
Si aucun client n'est sélectionné (str.length==0), la fonction efface l'espace réservé txtHint puis quitte la fonction.
Si un client est sélectionné, la fonction showCustomer() effectue les étapes suivantes :
- Créer un objet XMLHttpRequest
- Créer une fonction à exécuter lorsque la réponse du serveur est prête
- Envoyer une requête à un fichier sur le serveur
- Notez le paramètre (q) ajouté à la fin de l'URL (contenant le contenu de la liste déroulante)
Fichier ASP
La page serveur appelée par le JavaScript ci-dessus est un fichier ASP nommé "getcustomer.asp".
Le code source dans "getcustomer.asp" exécute une requête sur la base de données et renvoie le résultat dans un tableau HTML :
response.expires=-1
sql="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,conn
response.write("<table>")
do until rs.EOF
for each x in rs.Fields
response.write("<tr><td><b>" & x.name & "</b></td>")
response.write("<td>" & x.value & "</td></tr>")
next
rs.MoveNext
loop
response.write("</table>")
%>
Autres extensions