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

AJAX Discussion :

[AJAX] ReadyState bloqué sur 1


Sujet :

AJAX

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut [AJAX] ReadyState bloqué sur 1
    Bonjour tout le monde,

    Je galère avec une petite requête ajax toute simple, le state avance jusqu'a 1 et pas plus :-(

    Pourtant avec firebug je vois bien une réponse avec la bonne valeur. et quand je met un error_log dans mon php sur le bout de code en question il n'y a aucun problème.

    la méthode qui fait l'appel ajax:
    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
    function MajPoste(code){
    	ID = document.Identification.ID.value;
    	xhr = getXhr();
    	console.log('readyState 0 : ' + xhr.readyState);
     
        xhr.open("POST", "ajaxFonction.php", true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xhr.setRequestHeader("Cache-Control","no-cache");
        xhr.send("case=getIndicPoste&COD="+code+"&ID="+ID);
        console.log('readyState : ' + xhr.readyState);
     
        xhr.onreadystatechange = function(){
        	console.log('readyState in : ' + xhr.readyState);
     
        	if(xhr.readyState == 4 && xhr.status == 200){
        		result = xhr.responseText;
        		alert('resultat : '+result);
        		if(result == '0'){
        			document.getElementById('TDDoublonPoste').innerHTML = "";
        		}else if(result == '1')	{
        			document.getElementById('TDDoublonPoste').innerHTML = "<a onclick='ListeAffAvecPosteSource(\"p\")' style='cursor:pointer'>1 autre poste</a>";
        		}else{
            		document.getElementById('TDDoublonPoste').innerHTML = "<a onclick='ListeAffAvecPoste(\"p\")' style='cursor:pointer'>"+result+" autres poste source</a>";
        		}
        		document.Identification.modif.value=true;
        	}
        };
    }
    le code html (avec smarty)
    Code html : 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
    <td>Code Poste source :</td>
            <td colspan="2" class="gefip" >
     
                    {if $COD_EDIT}
                    <span id="DivPosteSource">
            		    <select name="PS_COD" id="PS_COD" style="width:320;" onclick="showModalDialog('liste_poste_source.php?COD='+document.Identification.COD.value,window,'dialogWidth:660px;dialogHeight:400px;scrollbars:yes;resize:yes');"">
                            {if $COD}
                                <option value="{$COD}">{$LIB} ({$COD})</option>
                            {else}
                                <option value="-1">Choisissez un poste</option>
                            {/if}
                        </select>
                    </span>
                    {else}
                        {$PS_LIB}<input name="COD" type="hidden" value="{$COD}">
                    {/if}
     
                <div id="TDDoublonPoste" style="display:inline">
    			    {if $FLAG_POSTE != "0" && !empty($FLAG_POSTE_SOURCE) }
    				    {if $FLAG_POSTE_SOURCE == 1}
    				        <a >1 autre affaire est sur ce poste source</a>
    				    {else}
    				        <a >{$FLAG_POSTE} autres affaires sont sur ce poste source</a>
                        {/if}
    			    {/if}
            	</div>
    		</td>

    et le php appelé dans ajaxFonction

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $COD = $_POST['COD'];
        $ID = $_POST['ID'];
     
        if (!empty($COD)){
            //recuperation du nombre de poste
            $sql = "select count(distinct(id)) as NB from affaire where cod = '$COD'";
            $result = $db->query($sql);error_log($sql);
            $row = $result->fetchRow(DB_FETCHMODE_OBJECT);
     
            echo $row->NB;
        } else {
            echo '0';
        }

    je ne vois vraiment pas ce qui cloche... si quelqu'un a une idée je suis preneur.
    Merci d'avance


    EDIT :
    J'ai bien vu ce post http://www.developpez.net/forums/d85...us-bloque-1-a/ qui parle de problème avec la fonction send mais je ne pense pas que cela soit mon cas.
    Quand on va de l'avant on avance !!!!

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Je precise que si je passe en synchrone, ca fonctionne nikel
    Quand on va de l'avant on avance !!!!

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonsoir,
    essaies de déclarer ta fonction xhr.readyState avant le send.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Déplace cette instruction " console.log('readyState : ' + xhr.readyState);" dans la fonction d'onreadystatechange.

    A+.

Discussions similaires

  1. [AJAX] Ajax : readyState bloqué à 1
    Par nynnie7 dans le forum AJAX
    Réponses: 3
    Dernier message: 06/02/2011, 14h46
  2. Réponses: 8
    Dernier message: 19/05/2009, 18h04
  3. [AJAX] readyState reste bloqué à 1
    Par Simon30 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 17/10/2008, 23h49
  4. [AJAX] readyState bloque à 3
    Par cocoyot dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/10/2008, 10h58
  5. [AJAX] readyState bloque à 1
    Par dubitoph dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/09/2008, 10h39

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