Bonjour,
Je souhaite entrer des données dans une base de données Access en utilisant la technologie AJAX (JavaScript + ASP)
html ("ajouter_deplacement2.htm") : formulaire > onclick appel d'une fonction de validation du formulaire
js ("ajouter_deplacement3.js") : fonction "validForm" > xhr.open('post','ajouter_deplacement.asp','true');
asp ("ajouter_deplacement2.asp") : insertion dans la base de données
Le problème survient à la ligne xhr.onreadystatechange = reportStatus();
Je pense que l'erreur vient du fait que je ne sais pas traiter l'envoi de données avec la méthode post dans mon fichier "ajouter_deplacement2.asp" --- il n'est pas du tout fonctionnel --- il doit falloir modifier le request.form par les données envoyées par le xmlHttpRequest mais je ne sais pas comment !!
Merci de bien vouloir me donner un ptit coup main
(je ne suis pas sur de mes entetes DOCTYPE aussi !)
fichier "ajouter_deplacement2.htm" :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Acquisition de données </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="ajouter_deplacement2.css" />
<script type="text/javascript" src="ajouter_deplacement2.js"></script>
</head>
<body>
<div id="content">
<p> Ajout d'un déplacement dans la base de données :</p>
<form name="form" action="" method="post" class="PositionForm">
<table>
<tr>
<td class="LabelForm"> <label for="nom_deplacement">Type de déplacement</label>: </td>
<td class="TextForm"> <input type="text" id="nom_deplacement" name="nom_deplacement"/> </td>
<td class="AdviceForm"> <div id="txtHint"></div> </td>
</tr>
</table>
<div>
<input type="button" value="Valider" onclick="validForm(this.form)"/>
<input type="reset" value="Rétablir"/>
</div>
</form>
</div>
</body>
</html>
fichier "ajouter_deplacment2.js" :
function validForm(form) {
if (document.getElementById('nom_deplacement').value == "") {
document.getElementById('txtHint').innerHTML = 'Ce champ est obligatoire !';
return false;
}
else {
var xhr = GetXmlHttpObject();
xhr.onreadystatechange = reportStatus();
xhr.open('post','ajouter_deplacement2.asp',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
var data = 'nom_deplacement=' + document.getElementById('nom_deplacement').value;
xhr.send(data);
}
}
// Fonction de test du BROWSER
function GetXmlHttpObject() {
var xhr = null;
try {
xhr = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
}
catch (err) {
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP'); // Internet Explorer 6.0+
}
catch (err) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer 5.5+
}
catch (err) {
alert('Votre Explorateur Internet ne supporte pas la technologie AJAX !');
}
}
}
return xhr;
}
// Fonction de test du transfert des données au serveur
function reportStatus() {
if (xhr.readyState == 4 && xhr.status == 200) { //readyState --> 0 : uninitialized / 1 : Open / 2 : Sent / 3 : Receiving / 4 : Loaded
document.getElementById('txtHint').innerHTML = xhr.responseText;
}
}
fichier "ajouter_deplacement2.asp" :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%option explicit %>
<%
' Regénération de la page (empêche l'utilisation du cache serveur)
response.expires = -1
response.AddHeader "Pragma", "no-cache"
response.AddHeader "cache-control", "no-store"
Dim g_oConn
Dim g_oRs
Dim frm = Request.form("nom_deplacement")
Dim sql = "INSERT INTO deplacements (nom_deplacement) VALUES ('" & frm & "');"
Set g_oConn = Server.CreateObject("ADODB.Connection")
g_oConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & Server.MapPath("base_test.mdb") & ";"
'On error resume next
g_oConn.Open
if g_oConn.State = 0 then
Response.Write "La connexion à la base """ & Server.MapPath("base_test.mdb") & """ a échoué <br/>"
Response.End
End if
'On error goto 0
Set g_oRs = Server.CreateObject("ADODB.Recordset")
g_oRs.Open sql, g_oConn, 3, 3
'response.write("Le deplacement a été ajouté à la base !")
If g_oConn.State = 1 then g_oConn.Close
Set g_oConn = Nothing
%>