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 :

Etrange JS et Ajax


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut Etrange JS et Ajax
    bonjour a tous,

    j'ai decouvert quelque chose d'etrange avec Ajax et Javascript. Voila j'ai un code brded.php tres simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
                    echo '<select name="brule">';
                                    echo '<option value=1>brule1</option>';
                                    echo '<option value=2>brule2</option>';
                                    echo '<option value=3>brule3</option>';
                                    echo '<option value=4>brule4</option>';
                                    echo '<option value=5>brule5</option>';
                    echo '</select>';
            
     ?>
    Ensuite j'ai mon code test.php ou se trouve le Javascript qui execute mon code brded.php

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <script>
    var bUniqueRowID = 0;
    function getXhr(){
        var xhr = null; 
    	if(window.XMLHttpRequest) // Firefox and others
    		xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    	   try {
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    	}
    	else { // XMLHttpRequest not supported by your browser
    		alert(" Your browser does not support XMLHTTPRequest objects..."); 
    		xhr = false; 
    		} 
         return xhr
    	}
     
    	/**
    	*  method called when the user clicks on the button
    	*/
     
    function gobr(){
    	var xhr = getXhr()
    	// We defined what we gonna do with the response
    	xhr.onreadystatechange = function(){
    	// We do somthing once the server's response is OK
    	if(xhr.readyState == 4 && xhr.status == 200){
     
     
    			// Retrieve <table> ID and create a <tbody> element
     
    			// Retrieve <table> ID and create a <tbody> element
     
    			var tbl = document.getElementById("brtable");
    			var tblBody = document.createElement("tbody");
    			var row = document.createElement("tr");
     
    			bUniqueRowID += 1;
     
    			var cell_1 = document.createElement("td");
    			cell_1.align="center";
    			cell_1.valign="center";
    			var cell_2 = document.createElement("td");
    			cell_2.align="center";
    			cell_2.valign="center";
    			var cell_3 = document.createElement("td");
    			cell_3.align="center";
    			cell_3.valign="center";
     
     
    		// Create the first cell which is a select
     
    			var cell1 = document.createElement("div");
    			cell1.innerHTML=xhr.responseText;
    			cell_1.appendChild(cell1);		
     
    		//Create the second cell a checked box
    			var cell2=document.createElement("input");
    			cell2.type="checkbox";
    			cell2.name="brdedicated";
    			cell_2.appendChild(cell2);
     
    		// Create the third cell which is a button
    			var cell3=document.createElement("input");
    			cell3.type="button";
    			cell3.value="Delete"
    			cell3.onclick=delRowbr;
    			cell_3.appendChild(cell3);						
     
    			// add cells to the row
    			row.appendChild(cell_1);
    			row.appendChild(cell_2);
    			row.appendChild(cell_3);
     
    		// add the row to the end of the table body
    			tblBody.appendChild(row);
     
    		// put the <tbody> in the <table>
    			tbl.appendChild(tblBody);
     
    		//	Rename cells with the row index			
    			var ind=row.rowIndex;
    			var liste_bname = row.getElementsByTagName("input");
    			var selectname = row.getElementsByTagName("select");
    			for(i=0; i < liste_bname.length; i++){
    				if (/*(liste_bname[i].name == "brule")|| */ (liste_bname[i].name == "brdedicated")){
    					liste_bname[i].name = liste_bname[i].name + "_" + ind; 
    				}
    			}
    			selectname[0].name = selectname[0].name + "_" + ind;
     
     
    			alert(ind);														
    		// sets the border attribute of tbl to 2;
    			tbl.setAttribute("border", "2");
     
    		}
    	}
    	xhr.open("GET","brded.php",true);
    	xhr.send(null);
    }	
     
     
    function delRowbr(){
    	var i= this.parentNode.parentNode.rowIndex;
    	document.getElementById('brtable').deleteRow(i);
    }
    </script>
    <form method="post">
    	<table align="center" border = "2" cellspacing ="0" cellpadding="3" id="brtable">
    		<tr><td><b>Business Rule Type:</b></td> <td><b>Dedicated:</b></td><td><input type="button" Name= "Ajouterbr" Value="Ajouter BR" onclick="gobr()"></td></tr>
     
    	</table>
    </form>
    Mais voila, quand j'ajoute une option comme cela dans le fichier brded.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value=6>brule6</option>';
    et que je save le fichier brded.php et k j'actualise ma page test.php n'a toujours pas la derniere option que je viens d'ajouter.
    pour que cette option apparaisse, il faut que je ferme cette page et que je relance localhost. et ainsi l'option 6 apparait.

    Qu'en pensez vous? Est-ce normal ?
    Merci d’avance.

    Merci
    Billy

  2. #2
    Membre expérimenté Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Par défaut
    Aller, je prends pas trop de risques. Je parie que tu test sous IE?

    ( edit ) Ouais non en fait, j'ai lu trop vite.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    Citation Envoyé par nod__ Voir le message
    Aller, je prends pas trop de risques. Je parie que tu test sous IE?

    ( edit ) Ouais non en fait, j'ai lu trop vite.
    Vous avez raison. je teste sous IE

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    http://www.innerhtml.saimal.fr/

    dasn la partie retour tu crées déja au moyen du DOM les elements parents...
    ne t'arretes pas en si bon chemin !

    fais pluto generer un objet json à ta page php
    sur le retour un simple eval et ensuite tu crées dynamiquement ton select
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    C'est un phénomène de cache navigateur non ? Tu as essayé de passer un paramètre (qui change à chaque fois) à ta requete AJAX ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET","brded.php?dt=" + new Date().getTime(),true);

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    le cache peut jouer aussi en effet
    suffit de mettre un header no cache dans la page php ou comme proposé passer un timestamp lors du send
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    simple problème de cache ;-)

    ajoute un pragma no cache dans ton fichier php

    je te renvois ici : http://fr.php.net/manual/fr/function.header.php

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    merci a tous, je lis et teste vos propositions et ensuite je vous dis ce qu'il en est.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    Citation Envoyé par gwyohm Voir le message
    C'est un phénomène de cache navigateur non ? Tu as essayé de passer un paramètre (qui change à chaque fois) à ta requete AJAX ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET","brded.php?dt=" + new Date().getTime(),true);
    Merci pour ta solution. j'ai meme pas besoin de reactualiser ma page.
    Thanks

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    le cache peut jouer aussi en effet
    suffit de mettre un header no cache dans la page php ou comme proposé passer un timestamp lors du send
    Ca marche. Merci bcp

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    simple problème de cache ;-)

    ajoute un pragma no cache dans ton fichier php

    je te renvois ici : http://fr.php.net/manual/fr/function.header.php
    Merci pour le lien. pas besoin de reactualiser aussi.

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

Discussions similaires

  1. [AJAX] liste deroulante avec ajax etrange
    Par kate59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/01/2009, 11h40
  2. [g++] message erreur etrange
    Par infotron dans le forum Autres éditeurs
    Réponses: 15
    Dernier message: 19/09/2004, 23h14
  3. [langage] Comportement étrange d'une variable
    Par Spaz dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2004, 11h29
  4. Probleme pour les insertion au format etranger
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 19/03/2003, 10h55

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