Accueil > Forum > > > > Ajax et IE6
Ajax et IE6
mercredi 17 septembre 2008 à 01:52:28 |
Ajax et IE6

saib
|
Bonjour, Voila, j'ai un problème assez étrange avec IE6 en utilisant le XMLHttpRequest : au bout de quelques appels, il ne réagit plus... jusqu'a ce qu'il tombe en timeout, et ensuite, ca refonctionne! Le probleme ne provient pas du serveur apache (easyPHP en local), car pendant que ca pédale dans la semoule, ca fonctionne tres bien sous FireFox... J'ai fait des tests (sur une autre machine) sous IE7, et la, pas de probleme. Jamais eu de probleme non plus avec FF. Les symptômes : * Un ou plusieurs appels ajax se passent tres bien * A un moment donné (je n'ai pas pu constater de "nombre d'appels critique", des fois c'est au 2eme, des fois au 15eme...), le raffraichissement de la page ne se termine pas (des images de se chargent pas, alors que les memes sont affichées un peu au dessus dans un tableau (liens modifier/supprimer)... en toute logique avec la mise en cache elles devraient etre affichées non?), et tous les appels ajax suivants ne donnent plus rien. Parfois ca va jusqu'au figeage de la page (plus aucun des éléments de la page ne répond, le curseur ne change pas en passant sur les zones de saisie ou les liens, impossible de scroller, mais le menu de IE répond bien, il est possible de fermer IE), et parfois meme jusqu'au figeage complet de IE (assez rare quand meme) * Je recoit un timeout pour chaque appel ajax qui a foiré (status 12002, apres une dizaine de minutes) * Les appels ajax fonctionnent de nouveau correctement... jusqu'au prochain "plantage"
Un peu de code :
Fonction effectuant l'appel ajax :
var httpRequest = false; //variable globale pour économiser la mémoire (aussi testée en local, meme probleme) function makeRequest(url, param, async) { if (!httpRequest) { if (window.XMLHttpRequest) // Mozilla, Safari,... { httpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) // IE { try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } if (!httpRequest) { alert('Abandon : Impossible de créer une instance XMLHTTP'); return false; } httpRequest.open('POST', url, async); // tous les appels a cette fonction se font avec async = true. J'ai aussi testé en synchrone, meme probleme. Testé également avec une methode GET : meme probleme. httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); if (async == true) httpRequest.onreadystatechange = alertContents; //fonction callback. Essayé en la placant avant le open ou apres le send => idem. httpRequest.send(param);
if (async == false) alertContents(); return true; } Les appels a makeRequest se font sous cette forme : var DateDebut = document.getElementById("HeuresDateDebut").value; var DateFin = document.getElementById("HeuresDateFin").value; var Employeur = document.getElementById("CritereEmployeurINPUT").value; var Client = document.getElementById("CritereClientINPUT").value; var Projet = document.getElementById("CritereProjetINPUT").value; makeRequest('SendData.php', 'page=heures&op=select&DateDebut=' + DateDebut + '&DateFin=' + DateFin + '&Employeur=' + Employeur + '&Client=' + Client + '&Projet=' + Projet + '&OrderBy=' + ColTri + '&Sens=' + SensTri, true); Fonction callback : function alertContents()// testé en passant le HXR en parametre quand déclaré en local dans la fonction précédente : meme probleme. { if (httpRequest.readyState == 4) { if (httpRequest.status == 200) { if (trim(httpRequest.responseText) != '') { if (httpRequest.responseXML != null) { TraiteReponseRequest(httpRequest.responseXML);// traitement des données xml (je met pas le code ici car beaucoup de choses, et a priori le probleme ne vient pas de la) } else { alert(httpRequest.responseText); } } else { alert('Un problème est survenu avec la requête (pas de réponse).'); } } else { alert('Un problème est survenu avec la requête (status:'+ httpRequest.statusText +').'); // on récupere un status 12002 ici quand le xhr se met a "délirer" sous IE6 } } } Génération du XML en php (simplifié car il y'a de nombreux cas de figure) : header('Content-Type: text/xml');
// Création de l'objet Xml $rep = new DOMDocument("1.0");
$Sens = ($_POST['Sens'] == 0)? 'ASC' : ' DESC'; $SQL = "SELECT RowID, DATE_FORMAT(DateDebut, '%d/%m/%Y') as DateDebut, DATE_FORMAT(DateFin, '%d/%m/%Y') as DateFin, NbreJours, NbreHeures, Employeur, Client, Projet, Remarques, MontantBrut, MontantNet, ContratRecu, FeuilletAssedic FROM heures WHERE UId = '$UID' AND DateDebut >= str_to_date('".$_POST['DateDebut']."', '%d/%m/%Y') AND DateDebut <= str_to_date('".$_POST['DateFin']."', '%d/%m/%Y') AND LOWER(Employeur) LIKE '".strtolower($_POST['Employeur']) ."%' AND LOWER(Client) LIKE '".strtolower($_POST['Client']) ."%' AND LOWER(Projet) LIKE '".strtolower($_POST['Projet']) ."%' ORDER BY ".$_POST['OrderBy']." ".$Sens; if ($Result = mysql_query($SQL)) { $RowNum = -1; $xml ="<resultset>\n"; $xml .="\t<header>\n"; $xml .="\t\t<resultat>OK</resultat>\n"; $xml .="\t\t<page>heures</page>\n"; $xml .="\t\t<op>select</op>\n"; $xml .="\t</header>\n"; $xml .="\t<dataset>\n"; while ($Row = mysql_fetch_row($Result)) { $RowNum = $RowNum + 1; $RowId = $Row[0]; $DateDebut = utf8_encode(htmlspecialchars(($Row[1] == '') ? ' ' : htmlentities($Row[1], ENT_QUOTES))); $DateFin = utf8_encode(htmlspecialchars(($Row[2] == '') ? ' ' : htmlentities($Row[2], ENT_QUOTES))); $NbreJours = utf8_encode(htmlspecialchars(($Row[3] == '') ? ' ' : htmlentities($Row[3], ENT_QUOTES))); $NbreHeures = utf8_encode(htmlspecialchars(($Row[4] == '') ? ' ' : htmlentities($Row[4], ENT_QUOTES))); $Employeur = utf8_encode(htmlspecialchars(($Row[5] == '') ? ' ' : htmlentities($Row[5], ENT_QUOTES))); $Client = utf8_encode(htmlspecialchars(($Row[6] == '') ? ' ' : htmlentities($Row[6], ENT_QUOTES))); $Projet = utf8_encode(htmlspecialchars(($Row[7] == '') ? ' ' : htmlentities($Row[7], ENT_QUOTES))); $Remarques = utf8_encode(htmlspecialchars(($Row[8] == '') ? ' ' : htmlentities($Row[8], ENT_QUOTES))); $MontantBrut = utf8_encode(htmlspecialchars(($Row[9] == '') ? ' ' : htmlentities($Row[9], ENT_QUOTES))); $MontantNet = utf8_encode(htmlspecialchars(($Row[10] == '') ? ' ' : htmlentities($Row[10], ENT_QUOTES))); $ContratRecu = $Row[11]; $FeuilletAssedic = $Row[12]; $xml .="\t\t<data>\n"; $xml .="\t\t\t<index>".$RowNum."</index>\n"; $xml .="\t\t\t<RowId>".$RowId."</RowId>\n"; $xml .="\t\t\t<DateDebut>".$DateDebut."</DateDebut>\n"; $xml .="\t\t\t<DateFin>".$DateFin."</DateFin>\n"; $xml .="\t\t\t<NbreJours>".$NbreJours."</NbreJours>\n"; $xml .="\t\t\t<NbreHeures>".$NbreHeures."</NbreHeures>\n"; $xml .="\t\t\t<Employeur>".$Employeur."</Employeur>\n"; $xml .="\t\t\t<Client>".$Client."</Client>\n"; $xml .="\t\t\t<Projet>".$Projet."</Projet>\n"; $xml .="\t\t\t<Remarques>".$Remarques."</Remarques>\n"; $xml .="\t\t\t<MontantBrut>".$MontantBrut."</MontantBrut>\n"; $xml .="\t\t\t<MontantNet>".$MontantNet."</MontantNet>\n"; $xml .="\t\t\t<ContratRecu>".$ContratRecu."</ContratRecu>\n"; $xml .="\t\t\t<FeuilletAssedic>".$FeuilletAssedic."</FeuilletAssedic>\n"; $xml .="\t\t</data>\n"; } $xml .="\t</dataset>\n"; $xml .="</resultset>"; } else { $xml ="<resultset>\n"; $xml .="\t<header>\n"; $xml .="\t\t<resultat>KO</resultat>\n"; $xml .="\t\t<page>heures</page>\n"; $xml .="\t\t<op>select</op>\n"; $xml .="\t</header>\n"; $xml .="\t<dataset>\n"; $xml .="\t\t<data>\n"; $xml .="\t\t\t<erreur>Erreur lors de la recherche des données : " .mysql_error()."</erreur>\n"; $xml .="\t\t</data>\n"; $xml .="\t</dataset>\n"; $xml .="</resultset>"; }
// Envoie des données xml if ($rep->loadXML($xml)) { echo $rep->saveXML(); } Ca fait 3 jours que je farfouille sur le net en long en large et en travers, et j'ai toujours pas trouvé de solution a ce probleme...
Voila, faites moi savoir si il vous faut plus d'infos, je vous met ca des que possible ^^
Merci d'avance, Seb
|
|
mercredi 17 septembre 2008 à 08:43:40 |
Re : Ajax et IE6

bultez
|
bonjour, tu es sûr que pour "récupérer" du xml ( fut-il créé par php ) il faut employer ajax ? j'utilise toujours, pour un fichier xml ( mais jamais utilisé avec création de ce xml par php, alors je dis peut-être n'importe quuoi !?! ) : function xmlFin() // Xml chargé { traitement du xml } if ( document.implementation && document.implementation.createDocument ) { xmlD = document.implementation.createDocument("", "", null); xmlD.onload = function() { xmlFin(); } } else { xmlD = new ActiveXObject("Microsoft.XMLDOM"); xmlD.onreadystatechange = function () { if (xmlD.readyState == 4) xmlFin(); } } xmlD.load("fichier.xml");
|
|
mercredi 17 septembre 2008 à 12:32:28 |
Re : Ajax et IE6

saib
|
Salut, et merci de ta participation! C'est, me semble-t'il, le principe de base d'AJAX : Asynchronous Javascript And XML... Ou alors j'ai loupé un truc quelque part  La propriété responseXML permet justement de récuperer le xml (généré dynamiquement par PHP ou non, et pour autant qu'il s'agisse de xml valide) sous forme d'objet DOM pour le traiter en js, donc l'idée de réinventer la poudre en réécrivant une fonction de chargement de document XML ne m'est meme pas venue a l'esprit en fait... Ceci dit ca pourrait etre une piste interessante pour ne pas passer par un XHR : charger un doc xml qui se génère tout seul a la demande grace a PHP... Cependant ca perd (je pense) les principaux avantages d'ajax : traitement asynchrone coté serveur si le traitement est potentiellement long, ce qui permet de ne pas figer le client le temps du traitement; passage de parametres pour pouvoir filtrer les données a recuperer et ne transferer entre le serveur et le client que le necessaire, plutot que "convertir" la base de données complete en xml, la transmettre au client, et effectuer la recherche dedans... Après, je sais qu'il est possible d'utiliser le XHR autrement qu'avec du XML : le JSON (envoi de donnée js structurées plutot que de xml), ou envoi de HTML préconstruit par le serveur... Le JSON, je maitrise pas du tout, je connait pas bien, et je trouve que ca perd quand meme l'interet de l'interoperabilité (la page php renvoyant les données ne peut etre appelée QUE par du js, ou alors il faut redécortiquer la réponse pour reconstruire une structure de données... bof bof...), quant au HTML préconstruit... beurk! Que fait-t'on de la séparation des roles?? le serveur est la pour faire du traitement de données, pas de la mise en page ou de l'affichage! Donc en conclusion, ajax et xml généré par php me parait toujours la meilleurs solution  Seb
|
|
mercredi 17 septembre 2008 à 13:52:10 |
Re : Ajax et IE6

bultez
|
on est bien d'accord... mais j'eus quelques soucis en n'utilisant pas ce que j'utilise, je n'ai plus IE6, peut-être est-ce que ça vaut le coup de tester malgré tout, et sans convertir la base complète ! sans fichier nulle part.... non,non : simplement en laissant tel quel coté php. malgré tout.. un extrait d'une base de données, la convertir en xml... je doute. php devrait renvoyer des données, et pas une page complète bien sûr ! c'est le but d'ajax... me semble-t-il.
|
|
mercredi 17 septembre 2008 à 20:41:00 |
Re : Ajax et IE6

nickadele
|
bonjour ou bonsoir, je me demande si ton problème ne viendrait pas de cette ligne : httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');J'ai déjà utilisé ajax avec du xml et j'ai jamais du définir le header pour ce type de requète ! Si tu veux je peux te fournir la librairie que j'utilise avec les fichiers xml. Nickadele ---------------------------------------------- non, ma belle ne s'appel pas Adèle Mon Blog
|
|
jeudi 18 septembre 2008 à 01:06:09 |
Re : Ajax et IE6

saib
|
Oups mon message a été langé en route, je m'en était pas appercu  Je disait donc : Bul : Je vais faire quelques tests dans ce sens, mais je ne pense pas pouvoir utiliser la méthode POST pour transmettre des données a PHP avec un XMLDOM (meme un GET dans l'URL du load je suis pas sur que ca marche bien...), hors j'ai réellement besoin de la méthode POST pour la sauvegarde de données saisies par l'utilisateur (champ commentaire notament), car la taille maxi des parametres que l'on peut passer en GET risque d'etre trop faible... Toutefois si la méthode GET fonctionne bien, je m'orienterait peut etre vers une solution mixte XMLDOM/ajax en utilisant AJAX uniquement pour la sauvegarde (et en croisant les doigts pour que ca merde pas...), toutefois, je préfererait quand meme n'utiliser que de l'ajax et trouver une solution a ce probleme... Nick: Cette ligne est necessaire pour l'utilisation de la méthode POST avec XMLHttpRequest, et je l'avait mise en commentaire quand j'avait tester la methode GET, sans plus de succes... Ce n'est donc pas elle la responsable!  Merci, Seb
|
|
jeudi 18 septembre 2008 à 01:16:40 |
Re : Ajax et IE6

saib
|
(Je comprend pas ce qui se passe, ca me bouffe mes messages, il n'y a que la signature qui est inserée... Si un modérateur passe par la, s'il peut faire un peu de ménage... Merci a lui, et désolé pour ce bazard ^^') Seb
|
|
jeudi 18 septembre 2008 à 12:07:35 |
Re : Ajax et IE6

mnouzahir
|
je crois que ton problème viens des \n et \t que tu ajout dans le fichier php;
j'avais le même problème hier et la cause été les \n
bonne chance 
|
|
jeudi 18 septembre 2008 à 12:42:05 |
Re : Ajax et IE6
|
jeudi 18 septembre 2008 à 13:22:26 |
Re : Ajax et IE6

saib
|
mnouzahir : Concernant les /t et /n, il ne s'agit que de formattage du xml (tabulations et retours chariot), normalement, ca ne devrait pas poser de probleme, et pour autant que je sache c'est tout a fait authorisé, mais soit, je testerait ce soir (je n'ai pas IE6 au taf mais IE7, qui lui ne pose aucun probleme)... nick : J'ai essayé de virer le header 'application/x-www-form-urlencoded' en conservant la méthode POST, et comme je m'y attendait, ca ne fonctionne pas (aucune réponse, que ce soit sous IE7 ou FF). Je veut bien tester ta librairie, mais si elle n'utilise pas ce header je doute qu'elle soit capable de gerer du POST, a moins qu'on ne puisse définir le header dans les options de l'objet, comme j'ai pu le voir dans quelques méthodes par prototypage... Toujours est-il que si ca fonctionne avec, ca m'arrangerait bien quand meme :-) Seb
|
|
Cette discussion est classée dans : xml, row, datedebut, httprequest, if
Répondre à ce message
Sujets en rapport avec ce message
Affectation d'un fonction pour un evenement pour IE et FF? [ par dudulebzh35 ]
Bonjour a tous,J'ai une liste avec le nom de fichiers et de repertoires (dans une table). Lorsque je clique sur un repertoire, je vois ses fichiers,
Problème actualisation auto Ajax [ par misterdod ]
Bonsoir,bon j'ai un souci, je souhaiterais qu'une div de ma page affiche un message suivant une donnée précise dans une table sql.J'utilise setInterva
Problème de Refresh [ par nabmoah ]
Salutj'ai trouvé ce bout de code sur ce forum et j'ai essayé de le faire marché mais sans succès.le problème c'est que la page m'affiche toutes les 2
parser un xml [ par zeitoun69 ]
Bonjour je dois parser un fichier xml et former un tableau a partir des données extraite j'ai réussi a former le tableau mais les données sont celles
mettr a jour svg avec xml httprequest [ par oussamatique ]
oussama bsr tout le mondej'ai créé une carte dynamyque sous svg maintenant je veux utilisé la technologé ajax en plus précis le xml h
Ajax - Impossible d'appeler ma page [ par darude94 ]
Bonjour,Voici mon soucis, en cliquant sur le lien supprimer je voudrais supprimer l'element sans rafraichir le probleme et que je ne parviens pas jusq
Console d'erreurs : Mal formé [ par Tilix ]
Bonjour, J'ai un petit problème. J'execute mes scripts grâce à de l'AJAX et la fonction eval();, mais la console d'erreurs m'affiche des problèmes alo
readystate qui reste à 1 [ par jpclutier ]
Bonjour à tous,J'ai fait un peu d'ajax qui me permet de récupérer des data dans une BdD. Avec FireFox tout fonctionne correctement mais avec IE7 le re
Récuperation pour passage AJAX d'une valeur d'un radiobutton [ par whiteange ]
Bonjour,J'ai un petit problème avec la récuperation de la valeur d'un radio bouton :J'ai le formulaire suivant :<form method="post" onsubmit="inscript
problème javascript - XML [ par iraho ]
Bonjour, j'ai un souci avec pour faire du xml dynamique avec javascript et j'aurais besoin d'aide. En fait, j'ai code associant xml, xslt et javascrip
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|