[Ajax] Pb sous firefox de xhr_objet.open et responseText

Pb sous firefox de xhr_objet.open et responseText [Ajax] - HTML/CSS - Programmation

Marsh Posté le 09-10-2007 à 12:05:34    

Bonjour a tous.
Gros souci et après quelque heure à décortiqué le problème et sans resultat j'en viens à demander l'aide d'expert en Ajax car je m'arrache les cheveux que je n'ai deja plus.

 

Alors j'ai un formulaire avec différent champs, lors du onClick sur le bouton du form j'ai mon action ajax qui se fait (Insert BDD)
Tout fonctionne bien sous IE, mais sous firefox non.
J'ai décortiqué le problème en ne passant seulement que 2 paramètres dans ma fonction. et j'ai fait des Alert pour vérifier les différente etapes.
Les variables passe bien et s'affiche
Le xhr_objet.readyState change bien d'etat pour passé à 4 (alert également)
mais lorsque je fais un Alert sur xhr.responseText je n'ai plus rien (fenetre vide)

 

voici le code de la partie Ajax du formulaire

 
Code :
  1. function connection(){
  2.   //-------------ouverture connection--------------------
  3.       if(window.XMLHttpRequest) // Firefox
  4.          xhr_objet = new XMLHttpRequest();
  5.       else if(window.ActiveXObject) // Internet Explorer
  6.          xhr_objet = new ActiveXObject("Microsoft.XMLHTTP" );
  7.       else { // XMLHttpRequest non supporté par le navigateur
  8.          alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  9.          return;
  10.   }
  11.  }
  12.  function testNew(title,auteur)
  13.  {       alert (title+'   '+auteur);
  14.   connection();
  15.   xhr_objet.open("GET", "rqt1.php?title=" + title +"&auteur=" +  auteur, true);
  16.   xhr_objet.setRequestHeader("Content-Type", "text/html; charset=UTF-8" );
  17.   xhr_objet.onreadystatechange = function() {
  18.    if (xhr_objet.readyState == 4)
  19.    {     
  20.     alert(xhr_objet.responseText);
  21.     /*if(xhr.responseText == 1 )
  22.      alert("Ajout effectué" )
  23.     else if(xhr.responseText == 0 )
  24.      alert("erreur lors de l\'ajout" )*/
  25.    }
  26.          }
  27.   xhr_objet.send(null);
  28.  }
 

et le fichier rqt1.php

 
Code :
  1. <?php
  2. //require_once("conf_bdd.php" );
  3. $sql_serveur="localhost";
  4. $sql_user="root";
  5. $sql_passwd="*********";
  6. $sql_bdd="masseffect";
  7. // CONNEXION A LA BDD
  8. $dbprotect = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);
  9.   mysql_select_db($sql_bdd,$dbprotect) or die("pas de BDD" );
  10. $title  = $_GET['title'];
  11. $auteur = $_GET['auteur'];
  12.   $requete = mysql_query("INSERT INTO tb_news (author_news, title_news) VALUES ('$auteur','$title')" );
  13. echo 'insertion';
  14. ?>
 

donc sous IE j'ai bien mon insert qui se fait en BDD et j'ai un responseText qui affiche (insertion) mais firefox rien du tout, pas d'insertion bdd, et seulement une alert mais vide

 

Une idée please ?


Message édité par hyptnos le 17-02-2012 à 08:39:17
Reply

Marsh Posté le 09-10-2007 à 12:05:34   

Reply

Marsh Posté le 09-10-2007 à 13:16:31    

Heu, une idee toute pourrie mais... Tu as mis une clef unique sur l'auteur et tu essaie de mettre le meme sous ff que sous ie et la requete plante en duplicate key. Essaie deja de traper/tracer les erreurs sql (au minimum, un echo de ta requete ne mange pas de pain).
++
Fred

Reply

Marsh Posté le 09-10-2007 à 13:48:35    

fred777888999 a écrit :

Heu, une idee toute pourrie mais... Tu as mis une clef unique sur l'auteur et tu essaie de mettre le meme sous ff que sous ie et la requete plante en duplicate key. Essaie deja de traper/tracer les erreurs sql (au minimum, un echo de ta requete ne mange pas de pain).
++
Fred


 
MErci de ton attention
cela dit quand j'ai dit que j'ai décortiqué le probleme c'est que j'ai juste enlever mon insert et tout trace de bdd dans mon code (pas dans celui que j'ai copier ici ) mais pour tester j'ai juste mis un echo 'insertion' dans mon fichier php rqt1.php.
Donc via ajax et le xhr.responseText il devrait me mettra l'alert insertion.
Et bien non sous Firefox rien
 
j'ai vraiment isolé le proibleme cela ne vient pas du xhr.open("GET", ....... et le lien est bon (copie / colle dans le navigateur et c'est good)
 
Donc vraiment la je sèche et le prof aussi (je suis en formation de developpement a L'Afpa)

Reply

Marsh Posté le 09-10-2007 à 13:56:19    

Je ne vois pas trop ce qui peux poser problème non plus...
J'ai une fonction similaire pour mon site et cela fonctionne. Je fais du post à la place du get mais je ne pense pas que cela soit le problème...
As-tu essayé de recopié le code de "connexion" dans "testNew" ?


---------------
Fred => http://www.meance.free.fr
Reply

Marsh Posté le 09-10-2007 à 13:57:39    

Ca devient interessant ton truc ;)
Perso, en plus du 'readystate', je teste aussi l'etat de retour :

Code :
  1. if (xhr_objet.readyState == 4)
  2. {
  3.     if ( xhr_objet.status == 200 )
  4.     {


Ca change qq chose ?
 
++
 
Fred

Reply

Marsh Posté le 09-10-2007 à 14:00:35    

Deja essayé en effet mais non malheureusement cela ne change absolument rien
 
et serieusement, j'y capte rien, pour une fois que c'est firefox qui fout la merde.
j'ai vider mon cache, fichier temporaire, les session, les cookies, etc.. idem. J'ai tester a partir de d'autre machine idem.
Mais non firefox partout ne veux rien savoir, IE partout niquel

Reply

Marsh Posté le 09-10-2007 à 15:13:02    

Ceci dit, je n'ai jamais rien renvoyé d'autre a un composant Ajax que du XML (jamais un texte sans rien, ca me semble d'ailleurs un peu 'hors normes' quand j'y reflechis). Si tu colle un entete XML avec un noeud text sous le modele suivant (a la place de l'echo, gaffe aux " en php) :

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2.   <string xmlns="http://tempuri.org/">insertion</string>


ca se passe mieux ou pas ?

Message cité 1 fois
Message édité par fred777888999 le 09-10-2007 à 15:13:55
Reply

Marsh Posté le 11-10-2007 à 08:42:23    

fred777888999 a écrit :

Ceci dit, je n'ai jamais rien renvoyé d'autre a un composant Ajax que du XML (jamais un texte sans rien, ca me semble d'ailleurs un peu 'hors normes' quand j'y reflechis). Si tu colle un entete XML avec un noeud text sous le modele suivant (a la place de l'echo, gaffe aux " en php) :

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2.   <string xmlns="http://tempuri.org/">insertion</string>


ca se passe mieux ou pas ?


 
Et bien non idem :S
Je comprend pas bien pourquoi firefox gène :(

Reply

Marsh Posté le 11-10-2007 à 11:07:17    

Tu n'aurais pas une erreur Javascript dans ta console d'erreurs par hasard ? :??:


Message édité par Soileh le 11-10-2007 à 11:48:17
Reply

Marsh Posté le 11-10-2007 à 11:17:06    

Non plus :S
console d'erreur vierge de chez vierge sous firefox
et pas d'erreur sous IE (et sous ie sa marche)
 
Hummm bizarre n'est ce pas

Reply

Marsh Posté le 11-10-2007 à 11:17:06   

Reply

Marsh Posté le 11-10-2007 à 11:23:02    

dzing35 a écrit :

Je ne vois pas trop ce qui peux poser problème non plus...
J'ai une fonction similaire pour mon site et cela fonctionne. Je fais du post à la place du get mais je ne pense pas que cela soit le problème...
As-tu essayé de recopié le code de "connexion" dans "testNew" ?


 
Tu as essayé en ne faisant qu'une seule fonction ?


---------------
Fred => http://www.meance.free.fr
Reply

Marsh Posté le 11-10-2007 à 11:41:15    

dzing35 a écrit :


 
Tu as essayé en ne faisant qu'une seule fonction ?


 
Oui car j'ai recommencé tout depuis zero en prenant gare a la syntaxe, au guillemet simple , double, fait des function plus propre etc donc la fonction ajax dans une et unique fonction
 

Code :
  1. function sendForm(){
  2. //Récupération des variables du formulaires
  3. var title = document.getElementById('title').value;
  4. var idCat = document.getElementById('inptSelect').options[document.getElementById('inptSelect').selectedIndex].value;
  5. var resum = document.getElementById('resum').value;
  6. var corp = document.getElementById('corp').value;
  7. var source = document.getElementById('source').value;
  8. var urlSrc = document.getElementById('urlSrc').value;
  9. var getUrl = "?title="+title+"&idCat="+idCat+"&resum="+resum+"&corp="+corp+"&source="+source+"&urlSrc="+urlSrc;
  10. //
  11. //appel de la fonction connection()
  12. getUrl =  "requete/requete_AddNew.php"+ getUrl;alert(getUrl);
  13. connection();
  14.      //-------------reception des données ------------------
  15.     xhr_object.open("GET",getUrl, true);
  16.     xhr_object.setRequestHeader("Content-Type", "text/html; charset=UTF-8" );
  17.     xhr_object.onreadystatechange = function() {
  18.         if(xhr_object.readyState == 4) {
  19.            if (xhr_object.status == 200 || xhr_object.status == 304){
  20.                  //document.getElementById('reponse').innerHTML =xhr_object.responseText ;
  21.   alert(xhr_object.responseText);
  22.            }
  23.         }
  24.     }
  25.     xhr_object.send(null);
  26. }


 
et la bas toujours pareil la console est vide
et l'alerte est également vide :S

Reply

Marsh Posté le 11-10-2007 à 11:51:23    

Et en faisant du synchrone, plutôt que de l'asynchrone :

Code :
  1. xhr_object.open("GET",getUrl, false);



---------------
Fred => http://www.meance.free.fr
Reply

Marsh Posté le 11-10-2007 à 13:14:25    

c'est réglé, le problème ne venait pas d'ajax ni du php, mais de l'html en lui même pffff que de recherche pour rien
 
en effet dans mon formulaire HTML j'avais mis un  
 
input type="submit"           (par habitude)
et vu que je vais un onClick et l'apel de la fonction Ajax c'est la que sa coincait
 
Donc j'ai mis un  
 
input type button
 
et sa roule
 
En tout cas merci :)

Reply

Marsh Posté le 11-10-2007 à 13:51:55    

:) Bon, c rassurant qq part, en effet, je fais plein d'ajax avec ff et j'avais jamais rencontre ca :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed