Bonjour
En pleine phase de test du concept Ajax, j'essaye comprendre les différentes notions tant bien que mal. Pour cobaye, j'ai pris un formulaire d'envoi de messages instantanés. A l'heure actuelle, le formulaire est basique et recharge l'intégralité de la page web, ce qui peut s'avérer contraignant lorsque des utilisateurs néophytes redondent leur envoi de messages (à cause du cache du navigateur, ils rafraichissent la page et clique sur OK réenvoyant leur message).
Bref je pense qu'Ajax peut m'aider à éradiquer ce soucis.
Or donc voici mon code et mes incompréhensions :
Code Fonction AJAX : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //AJAX - Shoutbox envoie message function AjShoutbox(message) { xhr.open('POST',"index.php",true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status==200) { alert('OK'); //Test de résultat OK } else { document.getElementById('msg').innerHTML=message+':NOK'; //Test de résultat NON OK } } xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xhr.send('message='+message); }
Code Page php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 if (isset($_POST["message"]) && !empty($_POST["message"]) && strstr($_POST["message"], 'Ecrire un message ici...') != true) { $updateMessage = "INSERT shoutbox SET s_date = UNIX_TIMESTAMP(now()), s_message ='".$_POST["message"]."', s_mid ='".$info["id"]."' "; $resultMessage = mysql_query($updateMessage) or die(mysql_error()); } echo '<form method="POST" onsubmit="AjShoutbox(this.message.value); return false" action="">'; echo '<tr>'; echo '<td id="sh_btn"><input type="text" name="message" size="25" maxlength="500" value="Ecrire un message ici..." onFocus="if (this.value==\'Ecrire un message ici...\') {this.value=\'\'}"> <input type="submit" value="Envoyer"/></td>'; echo '</tr>'; echo '<tr>'; echo '<td id="msg"></td>'; echo '</tr>'; echo '<tr>'; echo '</form>';
Alors de mes incompréhensions :
- Lorsque je clique sur le bouton submit "Envoyer" les deux tests de résultats s'affichent (boite d'alerte -> OK et le td avec id "msg -> message + NOK), avec la condition "if" je ne vois pas pourquoi il m'affiche les deux conditions.
- Le message est bien envoyé mais je suis obligé de recharger la page intégralement pour afficher le message, est ce à cause du fait que je traite le post directement dans la page index.php ?
Merci d'avance et bonne journée.
Partager