J'ai une page qui charge un fichier XML avec des milliers de codes postaux en mémoire. Une fois le fichier XML chargé, une zone de texte et un bouton de recherche sont affichés et l'utilisateur peut entrer un code postal (code postal) et cliquer sur Rechercher et certains résultats s'afficheront. Le problème est, la charge initiale prend un certain temps et la page indique "chargement ..." pendant 10-15 secondes avant que la boîte de texte et le bouton de recherche apparaissent. Je dois faire apparaître le champ/le bouton de recherche plus rapidement/immédiatement, même si cela signifie un peu plus de temps pour les recherches. J'avoue, je suis plutôt un mec .net et je ne connais pas bien javascript/ajax. Voici la fonction qui charge le fichier XML. Quelqu'un peut-il aider?charger un fichier XML en arrière-plan
function importXML() {
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var i,j;
var xmlDoc=xmlhttp.responseXML;
for (i=0; i<arrServiceProviders.length;i++) {
var regionList = xmlDoc.getElementsByTagName("region");
var postalCodeList = regionList[i].getElementsByTagName("postalcode");
for (j=0;j<postalCodeList.length;j++) {
arrServiceProviders[i][j]=postalCodeList[j].childNodes[0].nodeValue;
}
// debug time:
//alert(arrServiceProviders[i]);
}
var searchForm = document.getElementById("search-wrapper");
var loadingPlaceholder = document.getElementById("loading");
loadingPlaceholder.className = "hidden";
searchForm.className = "";
}
};
xmlhttp.open("GET","/agency-postal-codes.xml",true);
xmlhttp.send();
}
Je vous suggère de commencer le chargement de vos codes postaux en fonction de l'entrée utilisateur dès qu'ils commencent à taper dans la zone de recherche. De cette façon, vous n'aurez jamais à charger TOUS les codes postaux. Je pense qu'une boîte de choix comme [Choisi] (http://harvesthq.github.com/chosen/) pourrait vous aider sur ce point. –
Et que se passe-t-il si la boîte de saisie est affichée mais le xml n'est pas chargé? Je veux dire, il suffit de déplacer le code non visible en dehors du rappel de chargement, n'est-ce pas votre problème, n'est-ce pas? – Bergi