J'utilise AJAX pour récupérer une commande système simple, qui prends environ 1 seconde à s'exécuter. (et qui fait un print dans une page php, elle même renvoyée par xmlhttprequest en responseText)
Sur la page web, il faut attendre plus de 10 secondes pour voir le résultat de la page. (j'ai testé le script hors ajax, et il prends 1 seconde d'exécution environ.)
Donc, c'est le navigateur qui attends la réponse.. un peu longtemps !
P.S je sais que innerHTML c'est pas un standard, mais je n'ai pas pris le temps de trouver mieux...
Code:
function xmlhttpPost(strURL, form_name,div_id) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepage(self.xmlHttpReq.responseText, div_id);
}
}
self.xmlHttpReq.send(getquerystring(document.forms[form_name]));
}
function getquerystring(Form) {
/*var form = document.forms[form_name];
var word = form.word.value;
qstr = 'w=' + escape(word); // NOTE: no '?' before querystring
return qstr;
*/
var data=""
for (key in Form.elements) {
data+=escape(Form.elements[key].name)+"="+escape(Form.elements[key].value)+"&";
}
return data.substr(0, data.length-1);
}
function updatepage(str, div_id){
document.getElementById(div_id).style.display='block';
if (str.length>0) document.getElementById(div_id).innerHTML = str;
}
Y a-t-il un moyen de remédier à cela ?
Sous IE7, cela ne fonctionne tout simplement pas.
# mea culpa
Posté par TNorth . Évalué à 1.
Bonne journée.
[^] # Re: mea culpa
Posté par Raphaël G. (site web personnel) . Évalué à 2.
Creation a la volée de l'arbre dom => instantané (mais plus de code)
Regarde les extensions de firefox un a un truc génial qui te donne l'arbre dom du document.
Pose un id=XXX dans ton div parent et amuse toi a coup de :
var parent = document.getElementById('XXX');
parent.appendChild(document.createElement('div'));
Enfin un code de ce genre.
[^] # Re: mea culpa
Posté par Moogle . Évalué à 2.
Regarde du côté de Prototype aussi (ou autres frameworks), ça va te simplifier la vie, notament pour la compatibilité entre navigateurs.
[/pub]
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.