IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] IE7 : mon script ne fonctionne plus


Sujet :

JavaScript

  1. #1
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut [AJAX] IE7 : mon script ne fonctionne plus
    Salut

    Certains se rappelleront surement le script AJAX que j'avais développé pour l'interrogation des CP/Ville en ligne. C'était un système de listes liées à la google suggest.
    Mon script fonctionne sur IE6, FF, Opéra et Netscape 7.

    Seulement voilà, il ne fonctionne pas sous IE7. Et je n'ai aucun message d'erreur ! On dirait qu'il execute l'AJAX qu'une seule fois, il ne recharge rien ensuite et n'affiche même pas les autres listes liées.

    Quelqu'un a déjà été confronté à se problème avec IE7 ? Qu'est ce qui a changé depuis cette version ?

    Si besoin je peux poster mon code et vous pouvez voir le comportement sur abo2.asp après avoir choisi un tarif et validé sur la page du lien :
    http://www.magnificat.net/magnificat...ncais/abo1.asp

    Merci pour votre aide car je ne vois pas du tout quoi faire

  2. #2
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    personne ne voit d'où pourrait provenir se changement depuis IE7 ?

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    c'est pas juste la gestion du cache (ou tes paramètres) qui a changé ?
    Si c'est le cas, une piste

    A+

  4. #4
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    Je viens de tester en ajoutant les lignes qu'il y a dans l'autre topic dans mes pages ASP appelées par AJAX

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    response.expires = -1
    response.AddHeader "Pragma", "no-cache"
    response.AddHeader "cache-control", "no-store"
    Mais ca ne change rien

    EDIT : on dirait qu'il ne fait le "open" qui appelle mes pages ASP qu'une seule fois, même quand la page appelée est différente.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Oluha
    Je viens de tester en ajoutant les lignes qu'il y a dans l'autre topic dans mes pages ASP appelées par AJAX
    Attention, il semble qu'il faille absolument que ces lignes soient les 1° de ta page ASP ...
    Mais c'était juste une piste, le pb est peut-être ailleurs ...

    A+

  6. #6
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    oui oui je les ai mises en 1er.

    J'ai lancé une trace sur le serveur SQL et les requêtes que j'ai dans mes pages ASP appelée par AJAX apparaissent donc les appels se font bien mais c'est l'affichage dans mon div qui ne change pas ou carrement le div qui ne s'affiche plus une fois qu'il a été fermé une première fois.

    Ce qui me fait donc penser que ce n'est pas l'appel qui merde mais la récupération de la réponse.

    Voilà les 2 fonctions pour le CP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function liveSearchDoSearchcp() {
    	clic = false;
    	if (typeof liveSearchRoot == "undefined") {
    		liveSearchRoot = "";
    	}
    	if (typeof liveSearchRootSubDir == "undefined") {
    		liveSearchRootSubDir = "";
    	}
    	if (typeof liveSearchParams == "undefined") {
    		liveSearchParams = "";
    	}
    	if (liveSearchLastcp != document.getElementById('cp').value) {
    		if (liveSearchReq && liveSearchReq.readyState < 4) {
    			liveSearchReq.abort();
    		}
    		if ( document.getElementById('cp').value == "") {
    			liveSearchHidecp();
    			return false;
    		}
    		if (window.XMLHttpRequest) {
    		// branch for IE/Windows ActiveX version
    		} else if (window.ActiveXObject) {
    			liveSearchReq = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    		if (document.getElementById("pays").value == "FRANCE") {
    			liveSearchReq.onreadystatechange= liveSearchProcessReqChangecp;
    			liveSearchReq.open("GET", "livesearchcp.asp?cp=" + document.getElementById('cp').value + "&ville=" + document.getElementById('ville').value + "&pays=" + document.getElementById("pays").value + liveSearchParams);
    			liveSearchLastcp = document.getElementById('cp').value;
    			liveSearchReq.send(null);
    		} else {
    			liveSearchHidecp();
    		}
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function liveSearchProcessReqChangecp() {
     
    	if (liveSearchReq.readyState == 4) {
    		liveSearchHideville();
    		var  res = document.getElementById("LSResultcp");
    		res.style.display = "block";
    		var  sh = document.getElementById("LSShadowcp");
    		sh.innerHTML = liveSearchReq.responseText;
    	}
    }

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Effectivement, vus tes tests, ça risque d'être pur IE7 : je passe la main ...
    Bonne chance.

    A+

  8. #8
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    Bon j'ai fais des tests en ajoutant une alerte dans la 2eme fonction qui correspond à l'affichage du resultat et qui est appelée par la 1ere fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function liveSearchProcessReqChangecp() {
     
    	if (liveSearchReq.readyState == 4) {
    		liveSearchHideville();
    		//liveSearchHidevoie();
    		var  res = document.getElementById("LSResultcp");
    		res.style.display = "block";
    		var  sh = document.getElementById("LSShadowcp");
    		sh.innerHTML = liveSearchReq.responseText;
     
    		alert("OK je suis dedans");
    	} else {
    		alert("pas ok !");
    	}
    }
    Quand je suis dans la page j'ai plusieurs fois "pas ok" avant qu'il n'affiche le résultat de la requête puis après j'ai "OK je suis dedans" et j'ai mon résultat qui apparait. Seulement après même si je continue à entrer des chiffres (et il devrait donc mettre à jour le résultat) je n'ai plus aucune alert.

    Ce qui me fait donc penser qu'une fois qu'il a eu le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liveSearchReq.readyState == 4
    la fonction n'est plus du tout appelée et donc normal qu'il ne mettent pas à jour ma liste.
    Mais ce que je ne comprend pas c'est pourquoi elle n'est plus appelée alors qu'apparemment d'après ma trace SQL il continue à faire le open de la 1ere fonction pour executer ma page ASP.

    C'est pas moi qui ait écrit le code à la base avec l'appel AJAX donc je ne connais pas bien le fonctionnement de la 1ere fonction. Si c'est plus clair pour quelqu'un, merci de m'aider car je suis dans le brouillard total



    EDIT : après qu'ils soit rentré dans ma condition == 4 j'aimerai bien changer la valeur de readyState pour tester si ca vient bien de là mais ca ne fonctionne pas, comment je pourrais faire ?

  9. #9
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    Ca y est je viens de trouver la solution pour IE7 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function liveSearchProcessReqChangecp() {
     
    	if (liveSearchReq.readyState == 4) {
    		liveSearchHideville();
    		//liveSearchHidevoie();
    		var  res = document.getElementById("LSResultcp");
    		res.style.display = "block";
    		var  sh = document.getElementById("LSShadowcp");
    		sh.innerHTML = liveSearchReq.responseText;
     
    		liveSearchReq.abort();
    	}
    }
    J'ai ajouté liveSearchReq.abort(); et maintenant tout fonctionne comme il faut sous IE7 et ca ne semble pas gêner le fonctionnement sur les autres navigateurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajax et XML. Mon script ne fonctionne pas.
    Par Dougui_bzh dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/07/2008, 09h04
  2. Mon eclipse ne fonctionne plus
    Par Lorenzox dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 06/12/2006, 16h32
  3. [2.0][C#][ATLAS] Mon javascript ne fonctionne plus.
    Par elkamy dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/10/2006, 13h01
  4. Mon script ne fonctionne tjrs pas !!
    Par adlich dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 29/04/2006, 00h43
  5. Mon XP ne fonctionne plus qu'en safe mode
    Par beegees dans le forum Windows XP
    Réponses: 6
    Dernier message: 30/09/2005, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo