Code XMLHttpRequest
Fermé
Alain
-
18 oct. 2009 à 02:28
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 19 oct. 2009 à 05:33
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 19 oct. 2009 à 05:33
A voir également:
- Code XMLHttpRequest
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
3 réponses
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
18 oct. 2009 à 10:14
18 oct. 2009 à 10:14
je te met un p'tit bout de code à tester
img.onclick =function() {var note= Name2Nb(this.id);note_new(note);};
fonction qui va noter ton article en ajax
fonction retournant l'objet XMLHttpRequest adéquat en fonction du navigateur
et tu n'a plus qu'a creer un fichier note.php
qui contiendra les requetes que tu souhaite faire
voila ça devrais je pense fonctionner,pour debuger utilise la console pour voir les erreurs javascript, y'en a peut etre j'ai pas tester
img.onclick =function() {var note= Name2Nb(this.id);note_new(note);};
fonction qui va noter ton article en ajax
function note_news(note) { //on recupere le note et on prepare la requete ajax var xhr_object = null; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } xhr_object.open("GET", "note.php?note="+note , true);//appele du ficher php qui va traiter tes infos passer en parametres get, bien sur tu peut passer d'autres pram en plus il suffit de les separer par & comme ça '&x=' +var1 + '&y=' + var2...etc xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { //alert(xhr_object.readyState); //alert(xhr_object.responseText); // DEBUG MODE decommente cette ligne pour debuger eval(xhr_object.responseText); //tu peut si tu souhaite afficher le resultat de ta requete dans un div /* AFFICHAGE DE LA REQUETE AJAX */ document.getElementById("divajax").innerHTML = xhr_object.responseText; } } //xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.setRequestHeader("Content-type", "charset=UTF-8"); var data = note; xhr_object.send(data); }
fonction retournant l'objet XMLHttpRequest adéquat en fonction du navigateur
function getXMLHttpRequest() { var req = false; try { req=new XMLHttpRequest(); } catch(e) { try { req=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } return req; }
et tu n'a plus qu'a creer un fichier note.php
qui contiendra les requetes que tu souhaite faire
<?PHP print_r($GET); // pour verifier que tu recois bien tes valeurs /* a partir de la c'est du php classique,insertion,modif etc */ ?>
voila ça devrais je pense fonctionner,pour debuger utilise la console pour voir les erreurs javascript, y'en a peut etre j'ai pas tester
Merci beaucoup Lewis34,
cependant, je ne comprends pas trop ce code (oui, je ne connais strictement rien à l'AJAX et JavaScript).
Je pense avoir compris où placer ton code par rapport à la page de défaut:
Seulement maintenant je bloque.
Oui pour la page note.php, en effet, le PHP sa va je connais, cependant, j'ai un peu de mal à faire la requête convenable:
j'ai dans ma table, les champs note mais aussi ID avec chaque article ayant son propre ID.
Je souhaiterais que la note soit attribuée à l'article correspondant. Les articles sont affichés avec page_article.php?ID=#, je pense donc qu'il faille utiliser .mysql_real_escape_string($_GET['ID'])) mais comment faire car là l'ID n'est plus récupéré, il faudrait créer la variable dans la page notation (qui deviendrait .php) puis l'envoyer en GET à la page note.php.
Enfin, je m'embrouille, je ne sais pas comment faire.
En code normal en PHP j'aurais fait comme tel:
Enfin voilà, j'ai encore besoin d'aide, mais merci bien encore pour l'aide apportée jusqu'à présent.
Bonne journée.
cependant, je ne comprends pas trop ce code (oui, je ne connais strictement rien à l'AJAX et JavaScript).
Je pense avoir compris où placer ton code par rapport à la page de défaut:
<html> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <head> <script> <!-- StarOutUrl= 'StarOut.gif'; //image par défaut StarOverUrl= 'StarOver.gif'; //image d'une étoile sélectionnée StarBaseId= 'Star'; //id de base des étoiles NbStar= 10; //nombre d'étoiles LgtStarBaseId=StarBaseId.lastIndexOf(''); function NotationSystem() { for (i=1;i<NbStar+1;i++) { var img =document.getElementById('Star'+i); img.onclick =function() {alert('Vous avez donné la note de '+Name2Nb(this.id)+'.');}; //Réaction lors du clic sur une étoile //Evidemment, il faudrait compléter cette fonction pour la rendre vraiment utile. //Par exemple, envoyer la note dans une base de donnée via un XMLHttpRequest. img.onclick =function() {var note= Name2Nb(this.id);note_new(note);}; function note_news(note) { //on recupere le note et on prepare la requete ajax var xhr_object = null; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } xhr_object.open("GET", "note.php?note="+note , true);//appele du ficher php qui va traiter tes infos passer en parametres get, bien sur tu peut passer d'autres pram en plus il suffit de les separer par & comme ça '&x=' +var1 + '&y=' + var2...etc xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { //alert(xhr_object.readyState); //alert(xhr_object.responseText); // DEBUG MODE decommente cette ligne pour debuger eval(xhr_object.responseText); //tu peut si tu souhaite afficher le resultat de ta requete dans un div /* AFFICHAGE DE LA REQUETE AJAX */ document.getElementById("divajax").innerHTML = xhr_object.responseText; } } //xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.setRequestHeader("Content-type", "charset=UTF-8"); var data = note; xhr_object.send(data); } function getXMLHttpRequest() { var req = false; try { req=new XMLHttpRequest(); } catch(e) { try { req=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } return req; } img.alt ='Donner la note de '+i; //Texte au survol img.src =StarOutUrl; img.onmouseover =function() {StarOver(this.id);}; img.onmouseout =function() {StarOut(this.id);}; } } function StarOver(Star) { StarNb=Name2Nb(Star); for (i=1;i<(StarNb*1)+1;i++) { document.getElementById('Star'+i).src=StarOverUrl; } } function StarOut(Star) { StarNb=Name2Nb(Star); for (i=1;i<(StarNb*1)+1;i++) { document.getElementById('Star'+i).src=StarOutUrl; } } function Name2Nb(Star) { //Le survol d'une étoile ne nous permet pas de connaître directement son numéro //Cette fonction extrait donc ce numéro à partir de l'Id StarNb=Star.slice(LgtStarBaseId); return(StarNb); } --> </script> </head> <body onload="NotationSystem();"> <!-- Vous pouvez mettre un nombre quelconque d'étoiles, veillez juste à mettre à jour la variable NbStar. Par défaut, les étoiles sont "éteintes" : si un utilisateur a désectivé JS il ne pourra pas voter mais le script ne plantera pas --> <img id="Star1" src="StarOut.gif" /><img id="Star2" src="StarOut.gif" /> <img id="Star3" src="StarOut.gif" /><img id="Star4" src="StarOut.gif" /> <img id="Star5" src="StarOut.gif" /><img id="Star6" src="StarOut.gif" /> <img id="Star7" src="StarOut.gif" /><img id="Star8" src="StarOut.gif" /> <img id="Star9" src="StarOut.gif" /><img id="Star10" src="StarOut.gif" /> </body> </html>
Seulement maintenant je bloque.
Oui pour la page note.php, en effet, le PHP sa va je connais, cependant, j'ai un peu de mal à faire la requête convenable:
j'ai dans ma table, les champs note mais aussi ID avec chaque article ayant son propre ID.
Je souhaiterais que la note soit attribuée à l'article correspondant. Les articles sont affichés avec page_article.php?ID=#, je pense donc qu'il faille utiliser .mysql_real_escape_string($_GET['ID'])) mais comment faire car là l'ID n'est plus récupéré, il faudrait créer la variable dans la page notation (qui deviendrait .php) puis l'envoyer en GET à la page note.php.
Enfin, je m'embrouille, je ne sais pas comment faire.
En code normal en PHP j'aurais fait comme tel:
<?PHP print_r ($GET); // pour verifier que tu recois bien tes valeurs /* a partir de la c'est du php classique,insertion,modif etc */ mysql_connect('localhost', 'PSEUDO', 'PASS') OR die('Erreur de connexion à la base'); mysql_select_db('DB') OR die('Erreur de sélection de la base'); $note = $GET; $enr = mysql_query('UPDATE ma_table SET note = "$note" WHERE ID = '.mysql_real_escape_string($_GET['ID'])) or die ("Erreur requette ".mysql_error()); mysql_close(); ?>
Enfin voilà, j'ai encore besoin d'aide, mais merci bien encore pour l'aide apportée jusqu'à présent.
Bonne journée.
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
19 oct. 2009 à 05:33
19 oct. 2009 à 05:33
il ne faut pas placer le code tel quel dans ta page.. ^^
tu ecrira soit entre <head> et </head>
function note_news(note)
{
et la suite..
soit dans un fichier a part que tu appelaera comme çà
pour ton ID tu peut le recuperer faciulement, si tes pages sont liées à l'ID.
tu met ton id dans un champ caché(met le en text pour deboguer et ensuite passe le en hidden)
cela va donner qqch comme ça <input type="text" name="id_article" id="id_article" value="<?PHP $id ?>" />
et dans la partie ajax (function note_news(note) )
tu rajoute ca au debut
modifie ta requete ajax
modifie ca aussi
et apres php classique dans ta page note.php
img.onclick =function() {var note= Name2Nb(this.id);note_new(note);}; function note_news(note) {
tu ecrira soit entre <head> et </head>
function note_news(note)
{
et la suite..
soit dans un fichier a part que tu appelaera comme çà
<script type="javascrispt" src="tonfichierdefonctionJS"></script>
pour ton ID tu peut le recuperer faciulement, si tes pages sont liées à l'ID.
tu met ton id dans un champ caché(met le en text pour deboguer et ensuite passe le en hidden)
cela va donner qqch comme ça <input type="text" name="id_article" id="id_article" value="<?PHP $id ?>" />
et dans la partie ajax (function note_news(note) )
tu rajoute ca au debut
var id=document.getElementById("id_article").value;
modifie ta requete ajax
xhr_object.open("GET", "note.php?note="+note +" &id=" +id , true);
modifie ca aussi
var data = note+' '+id;
et apres php classique dans ta page note.php