On lance la requête en asynchrone (on ne reste pas bloqué en attendant le résultat et en plus on ne change pas de page pour insèrer les données dans la base).
Code Javascript :
- Code: Tout sélectionner
function maFonctionAjax(Id, Nom)
{
var OAjax;
if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP');
OAjax.open('POST',"maPageDeRequPHP.php",true);
OAjax.onreadystatechange = function()
{
if (OAjax.readyState == 4 && OAjax.status==200)
{
if (document.getElementById)
{
if (OAjax.responseText =='true') { /* OK */
document.getElementById('msg').innerHTML='<font color=GREEN>'+OAjax.responseText+'</font>';
}else{ /* PAS OK */
document.getElementById('msg').innerHTML='<font color=RED>'+OAjax.responseText+'</font>';
}
}
}
}
OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
OAjax.send('Id='+Id+'&Nom='+Nom);
}
Code Html:
- Code: Tout sélectionner
<form method="post" onsubmit="maFonctionAjax(this.Id.value,this.Nom.value);return false" action="">
<table border="0" cellspacing="0">
<tr>
<td colspan=2>
Formulaire Ajax
</td>
</tr>
<tr>
<td>Id:</td>
<td>
<input name="Id" id="Id" type="text"></td>
</tr>
<tr>
<td>Nom:</td>
<td><input name="Nom" id="Nom" type="text"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="envoyer" /></td>
</tr>
</table>
</form>
<div id="msg"></div>
Code PHP (maPageDeRequPHP.php) :
- Code: Tout sélectionner
<?
session_start();
$erreurs=array();//tableau qui stocke les erreurs.
if(!$_POST['Id']){
$erreurs[]='Id: Veuillez encoder un Id';
}
if(!$_POST['Nom']){
$erreurs[]='Nom: Veuillez encoder un Nom';
}
if(count($erreurs)==0)
{
//ici tu enregistres les valeurs dans la bdd
echo "true";//cette valeur sera traité par ajax est vaut dire que tt passe pour le bien
}
else
{
echo "<p class='erreur'>";
for($i=0;$i<count($erreurs);$i++)
{
echo "- ".$erreurs[$i].".<br />";
}
echo "</p>";
}
?>