[AJAX]Caution provisional headers are shown

Caution provisional headers are shown [AJAX] - HTML/CSS - Programmation

Marsh Posté le 30-04-2014 à 22:33:44    

Salut à tous :)
 
Bon, voilà, j'ai un problème qui me tracasse.
J'ai une fonction en ajax qui ne marche pas sur certains PC, quel que soit le navigateur.
Par exemple, depuis chez moi tout fonctionne, depuis le boulot, tout fonctionne, depuis chez un ami, ça passe pas.
 
Comment fonctionne le script :
Dans un menu déroulant, je choisis un compte de comptabilité (60, 61, 62 etc). De là, j'ai un deuxième menu déroulant qui se remplit avec les sous-comptes du compte choisi (602000, 603000 etc).
 
Chez ceux pour qui ça ne marche pas, le débogueur de chrome me renvoie :
 
Caution provisional headers are shown
 
Voici mon code :
 

Code :
  1. <script type="text/javascript" language="javascript">
  2. <!--
  3. function getCptFromClass(type, src)
  4. {
  5. var selclass = document.getElementById('classe_'+type+'_'+src);
  6. var index = selclass.selectedIndex;
  7.  
  8. cpt = selclass.options[index].value;
  9. var Xhr_Object = null;
  10. if (window.XMLHttpRequest) // Mozilla
  11. {Xhr_Object = new XMLHttpRequest();}
  12. else if(window.ActiveXObject) // Internet Explorer
  13. {Xhr_Object = new ActiveXObject('Microsoft.XMLHTTP');}
  14. else // XMLHttpRequest non supporté par le navigateur
  15. {
  16.  alert("__IncompatibleXMLHTTP__" );
  17.  return;
  18. }
  19. //Récupération du XML sur la page serveur
  20. var Source = 'http://mondomaine.fr/page/includes/req_cptFromClass.php';
  21. //choix de la méthode post pour discuter avec le serveur
  22. Xhr_Object.open('POST', Source, true);
  23. //4 : le serveur a fini de travailler et a envoyé une réponse.
  24. Xhr_Object.onreadystatechange = function()
  25. {
  26.  if(Xhr_Object.readyState == 4)
  27.  {
  28.   var XML_Doc = Xhr_Object.responseXML;
  29.   var comptes = '';
  30.   if(XML_Doc.getElementsByTagName('Compteur').item(0).firstChild.nodeValue<0)
  31.   {
  32.    comptes += 'Aucun compte pour cette classe.';
  33.   }
  34.   else
  35.   {
  36.     for (Index = 0; Index <= XML_Doc.getElementsByTagName('Compteur').item(0).firstChild.nodeValue; Index++)
  37.     {
  38.    var numero_cpt=XML_Doc.getElementsByTagName('numero').item(Index).firstChild.nodeValue;
  39.    var nom=XML_Doc.getElementsByTagName('nom').item(Index).firstChild.nodeValue;
  40.     comptes += '<option value="'+numero_cpt+'">'+numero_cpt+' - '+nom+'</option>';
  41.     }
  42.   }
  43.   document.getElementById('compte_'+type+'_'+src).innerHTML=comptes;
  44.  }
  45. }
  46.  Xhr_Object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  47.  var Arguments = 'classe='+cpt+'&type='+type;
  48.  Xhr_Object.send(Arguments);
  49. }
  50. -->
  51. </script>


 
Et voici le fichier getCptFromClass.php
 

Code :
  1. <?php
  2.   header('Pragma: no-cache');
  3.   header('Expires: 0');
  4.   header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  5.   header('Cache-Control: no-cache, must-revalidate');
  6.   header("Access-Control-Allow-Origin: *" );
  7.   header('Content-type: application/xml');
  8.  
  9. session_start();
  10. include("./connectdb2.php" );
  11. if($_POST['type']=="ch" )
  12. {
  13.  $table="comptes_charges2";
  14. }
  15. elseif($_POST['type']=="pr" )
  16. {
  17.  $table="comptes_produits2";
  18. }
  19. $chaine_req="
  20. SELECT numero, nom
  21. FROM ".$table."
  22. WHERE id_compte='".$_POST['classe']."'
  23. ORDER BY numero ASC
  24. ;";
  25. $req_cpt=mysql_query($chaine_req)or die(mysql_error());
  26.       $Xml = new xmlWriter();
  27.       $Xml->openMemory();
  28.       $Xml->setIndentString('   ');
  29.       $Xml->setIndent(true);
  30.       $Xml->startDocument('1.0','iso-8859-1');
  31.       $Xml->startElement ('Comptes');
  32.  
  33.   if (mysql_num_rows($req_cpt)>0)
  34.      {// Créer un objet xmlWriter qui écrit des balises xHTML
  35.       while ($Sql_Ligne_M = mysql_fetch_array($req_cpt))
  36.              {
  37.     $Xml->startElement ('numero');       $Xml->text  ($Sql_Ligne_M['numero']);             $Xml->endElement();
  38.               $Xml->startElement ('nom');       $Xml->text  ($Sql_Ligne_M['nom']);               $Xml->endElement();
  39.    }
  40.           $Xml->startElement ('Compteur');       $Xml->text  (mysql_num_rows($req_cpt) - 1);                $Xml->endElement();
  41.      
  42. }
  43. else
  44. {
  45.  $Xml->startElement ('Compteur');       $Xml->text  (-1);                $Xml->endElement();
  46. }
  47. $Xml->endElement();
  48.  
  49.   print $Xml->outputMemory(true);
  50.   Unset($_POST, $Sql_Ligne_M, $req_cpt, $Xml);
  51.  
  52. mysql_close();
  53. ?>


 
Voilà.
 
Vous êtes mon dernier espoir !  [:cocacolalight]  
 
Merci pour votre aide
 [:astra74]

Reply

Marsh Posté le 30-04-2014 à 22:33:44   

Reply

Marsh Posté le 30-04-2014 à 23:02:54    

Adblock ?  
 
http://stackoverflow.com/questions [...] e-debugger


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 01-05-2014 à 00:05:50    

Et non ^^
J'y ai pensé.
J'ai aussi testé en navigation privée, pas mieux -_-

Reply

Marsh Posté le 02-05-2014 à 14:01:12    

Bon, j'ai essayé avec jQuery, c'est aps mieux -_-
 
Maintenant, j'ai ça :
(sauf sur certains PC où ça marche)
http://hfr-rehost.dev.syn.fr/self/978190142914ac03d0ce4c9e16bbabda11708ade.png
 
Je sèche là...

Reply

Marsh Posté le 02-05-2014 à 17:50:03    

Bon, j'ai changé 2 ou 3 trucs. Et après moultes bidouilles, j'ai remarqué que dans la fichier php reqCptFromClass.php (celui qui exécute la requêtes SQL), il n'arrive pas à lire une variable de session et du coup, ça marche pas.
 
J'ai bien mon session_start();
mais la variable $_SESSION['bdd'] n'est pas reconnue (c'est celle qui permet de sélectionner la base de données où doit s'exécuter la requête).
Sauf que, partout ailleurs dans le site, elle est lue, c'est que dans l'Ajax que ça pose problème.
 
++

Reply

Marsh Posté le 02-05-2014 à 18:28:22    

Bon, ben j'ai fait passer la nom de ma base de données via le GET.

Code :
  1. data : 'classe='+cpt+'&type=pr'+'&bdd=<?php echo $_SESSION['bdd']; ?>',


 
et voilà

Reply

Marsh Posté le 03-05-2014 à 13:57:38    

c'est juste dégueulasse de faire ça :s


---------------
Blablaté par Harko
Reply

Marsh Posté le 03-05-2014 à 18:29:37    

ouais, mais j'ai pas de meilleure solution :-/

Reply

Marsh Posté le 03-05-2014 à 22:00:17    

Ben si, ça signifie que le fichier que tu appelles (celui qui fait ton appel à la base) ne doit pas avoir de session_start()


---------------
Blablaté par Harko
Reply

Marsh Posté le 05-05-2014 à 08:25:58    

Ben si, justement,
en première ligne, juste après le "<?php"
 
Même que ça marchait sur d'autres PC (le mien par exemple).

Reply

Sujets relatifs:

Leave a Replay

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