brutax | 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 :
- <script type="text/javascript" language="javascript">
- <!--
- function getCptFromClass(type, src)
- {
- var selclass = document.getElementById('classe_'+type+'_'+src);
- var index = selclass.selectedIndex;
-
- cpt = selclass.options[index].value;
- var Xhr_Object = null;
- if (window.XMLHttpRequest) // Mozilla
- {Xhr_Object = new XMLHttpRequest();}
- else if(window.ActiveXObject) // Internet Explorer
- {Xhr_Object = new ActiveXObject('Microsoft.XMLHTTP');}
- else // XMLHttpRequest non supporté par le navigateur
- {
- alert("__IncompatibleXMLHTTP__" );
- return;
- }
- //Récupération du XML sur la page serveur
- var Source = 'http://mondomaine.fr/page/includes/req_cptFromClass.php';
- //choix de la méthode post pour discuter avec le serveur
- Xhr_Object.open('POST', Source, true);
- //4 : le serveur a fini de travailler et a envoyé une réponse.
- Xhr_Object.onreadystatechange = function()
- {
- if(Xhr_Object.readyState == 4)
- {
- var XML_Doc = Xhr_Object.responseXML;
- var comptes = '';
- if(XML_Doc.getElementsByTagName('Compteur').item(0).firstChild.nodeValue<0)
- {
- comptes += 'Aucun compte pour cette classe.';
- }
- else
- {
- for (Index = 0; Index <= XML_Doc.getElementsByTagName('Compteur').item(0).firstChild.nodeValue; Index++)
- {
- var numero_cpt=XML_Doc.getElementsByTagName('numero').item(Index).firstChild.nodeValue;
- var nom=XML_Doc.getElementsByTagName('nom').item(Index).firstChild.nodeValue;
- comptes += '<option value="'+numero_cpt+'">'+numero_cpt+' - '+nom+'</option>';
- }
- }
- document.getElementById('compte_'+type+'_'+src).innerHTML=comptes;
- }
- }
- Xhr_Object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
- var Arguments = 'classe='+cpt+'&type='+type;
- Xhr_Object.send(Arguments);
- }
- -->
- </script>
|
Et voici le fichier getCptFromClass.php
Code :
- <?php
- header('Pragma: no-cache');
- header('Expires: 0');
- header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
- header('Cache-Control: no-cache, must-revalidate');
- header("Access-Control-Allow-Origin: *" );
- header('Content-type: application/xml');
-
- session_start();
- include("./connectdb2.php" );
- if($_POST['type']=="ch" )
- {
- $table="comptes_charges2";
- }
- elseif($_POST['type']=="pr" )
- {
- $table="comptes_produits2";
- }
- $chaine_req="
- SELECT numero, nom
- FROM ".$table."
- WHERE id_compte='".$_POST['classe']."'
- ORDER BY numero ASC
- ;";
- $req_cpt=mysql_query($chaine_req)or die(mysql_error());
- $Xml = new xmlWriter();
- $Xml->openMemory();
- $Xml->setIndentString(' ');
- $Xml->setIndent(true);
- $Xml->startDocument('1.0','iso-8859-1');
- $Xml->startElement ('Comptes');
-
- if (mysql_num_rows($req_cpt)>0)
- {// Créer un objet xmlWriter qui écrit des balises xHTML
- while ($Sql_Ligne_M = mysql_fetch_array($req_cpt))
- {
- $Xml->startElement ('numero'); $Xml->text ($Sql_Ligne_M['numero']); $Xml->endElement();
- $Xml->startElement ('nom'); $Xml->text ($Sql_Ligne_M['nom']); $Xml->endElement();
- }
- $Xml->startElement ('Compteur'); $Xml->text (mysql_num_rows($req_cpt) - 1); $Xml->endElement();
-
- }
- else
- {
- $Xml->startElement ('Compteur'); $Xml->text (-1); $Xml->endElement();
- }
- $Xml->endElement();
-
- print $Xml->outputMemory(true);
- Unset($_POST, $Sql_Ligne_M, $req_cpt, $Xml);
-
- mysql_close();
- ?>
|
Voilà.
Vous êtes mon dernier espoir ! Merci pour votre aide
|