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] Retour de valeur AJAX


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut [AJAX] Retour de valeur AJAX
    Bonjour,

    Dans Mon fichier *.js j'ai ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var url="SimuleBDD.jsp";
    url=url+"?q="+(obj.value);
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);

    et dans un autre fichier * jsp j'ai ça:


    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
     
    myArr.add("Italian Riviera");
    myArr.add("Jersey Shore");
    myArr.add("Puerto Rico");
    myArr.add("Los Cabos Corridor");
    myArr.add("Lubmin");
    myArr.add("Coney Island");
    myArr.add("Karlovy Vary");
    myArr.add("Bourbon-l'Archambault");
    myArr.add("Walt Disney World Resort");
    myArr.add("Barbados");
    myArr.add("Luis");
     
    for(int i = 0; i < myArr.size(); i++){
        String aux = myArr.get(i);
        if(aux.equals((String)request.getParameter("q")))
    	out.print(myArr.get(i)) ;
    }
    alors dans mon fichier *.js

    j'essaie d'imprimer le résulta comme dans l'exemple suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
    alert(xmlHttp.responseText;);
    alert(...) ne fait rien, alors je ne sais pas comment récupérer la valeur pour pouvoir l'imprimé dans l'alert


    Je vous remercie d'avance.

  2. #2
    Expert éminent

    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
    Par défaut
    Bonjour,
    Citation Envoyé par Snyper Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
    alert(xmlHttp.responseText;);
    alert(...) ne fait rien, alors je ne sais pas comment récupérer la valeur pour pouvoir l'imprimé dans l'alert
    A quel endroit de ton code as-tu mis ce passage ?
    Tu as peut-être des quotes (simples ou doubles) dans la réponse, qui empêche de l'afficher dans l'alert().
    Pour vérifier tape l'url (complète), appelée par Ajax, directement dans la barre d'adresse. Le responseText s'affichera dans le nav et tu auras le code source.

    Et sinon, une alert() ne peut pas être imprimée

    A+

  3. #3
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Tu assignes à ta fonction onreadystatechange une fonction de callback, "stateChanged", mais elle n'est pas dans ton extrait...
    Or, c'est bien à l'intérieur de celle-ci que ton traitement de réponse (la récupération de ton xmlHttp.responseText) doit se trouver... ^^

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut Retour de valeur AJAX
    Je vous remercie pour vos réponse qui mon mis sur la voie:


    Voici la solution le traitement de donné que j'effectue

    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
    function stateChanged() {
    	if ( xmlHttp.readyState==4 ) {
    		// La respuesta en formato TXT.
    		var text = xmlHttp.responseText;
    		// DEBUG:	alert( "text:" + text );
     
    		// La respuesta en formato XML.
    		var xml = xmlHttp.responseXML;
    		// DEBUG:	alert( "xml:" + xml );
     
    		// El modelo DOM de la respuesta.
    		var doc = xml.documentElement;
    		// DEBUG:	alert( "doc:" + doc );
     
    		var _obj = document.getElementById("txtHint");
    		_obj.innerHTML = xmlHttp.responseText;
     
    		var _champ = document.getElementById("champ");
    		_champ.innerHTML = xmlHttp.responseText;
     
    		// Veamos si han venido datos útiles.
    		var datosUtiles = doc.getElementsByTagName('item');
    		var total = datosUtiles.length;
     
    		var encontrado = "";
    		if ( total>0 ) {
    			var msg = "";
    			var n = 0;
    			for ( n=0; n<total; n++ ) {
    				var nodo = datosUtiles[n];
    				msg += "\n[nodo==" + nodo.nodeName + "]";
    				msg += "\n | [parentNode.nodeName==" + nodo.parentNode.parentNode.nodeName + "]";
    				msg += "\n | [text==" + nodo.text + "]";
    				msg += "\n | [value==" + nodo.value + "]";
    				msg += "\n | [item==" + nodo.item + "]";
    				msg += "\n | [nodeType==" + nodo.nodeType + "]";
    				msg += "\n | [nodeTypedValue==" + nodo.nodeTypedValue + "]";
    				msg += "\n | [nodeTypeString==" + nodo.nodeTypeString + "]";
    				msg += "\n | [nodeValue==" + nodo.nodeValue + "]";
    				msg += "\n | [attributes==" + nodo.attributes.length + "]";
    				var attrs = nodo.attributes;
    				if ( attrs!=null ) {
    					var nAttrs = nodo.attributes.length;
    					for ( var a=0; a<nAttrs; a++ ) {
    						var attr = attrs[a];
    						var key = attr.name;
    						var val = attr.value;
    						if ( key=="value" ) {
    							alert("Size: " + val.length)
    							msg += "\n | [attribute("+(a+1)+"/"+nAttrs+")] ["+key+"=="+val+"]";
    							encontrado = val;
    						}
    					}
    				}
    			}
    			// DEBUG:	alert("[stateChanged::"+total+"] "+msg);
    		}
     
    /*
    		var doc = xmlHttp.responseXML.documentElement;
    		var search = doc.getElementsByTagName('data');
    		// DEBUG:	alert(search.length);
    */
    		writeSugg(encontrado);
    		changeColor(document.getElementById("txtHint").value);
    	}
    }

    Il faut absolument faire un traitement de donnée dans la jsp porque le résulta soie en forma xml, voici la simuleBDD.jsp presente dans l'url


    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
    <%@ page import = "java.util.ArrayList"
    %><%	response.setContentType( "text/xml" );
    %><?xml version="1.0" encoding="ISO-8859-1"?>
     
    <data>
    <%
    ArrayList<String> myArr = new ArrayList<String>();
    myArr.add("Italian Riviera");
    myArr.add("Jersey Shore");
    myArr.add("Puerto Rico");
    myArr.add("Los Cabos Corridor");
    myArr.add("Lubmin");
    myArr.add("Coney Island");
    myArr.add("Karlovy Vary");
    myArr.add("Bourbon-l'Archambault");
    myArr.add("Walt Disney World Resort");
    myArr.add("Barbados");
    myArr.add("Luis");
     
    //out.print((String)request.getParameter("q"));
     
    		for(int i = 0; i < myArr.size(); i++){
    			System.out.println("posi:" + i);
    			String aux = myArr.get(i);
    			//if((aux.substring(0, ((String)request.getParameter("q")).length())).equalsIgnoreCase((String)request.getParameter("q")))
    			if( aux.equals( (String) request.getParameter("q") ) ) {
    %>	<item index="<%=i%>" value="<%=myArr.get(i)%>"/>
    <%			}
    		}
     
     
    //out.print((String)request.getParameter("sid"));
     
    %></data>

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

Discussions similaires

  1. [AJAX] Recuperer la valeur d'un champs d'un tableau AJAX
    Par Greggggggg dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/06/2008, 18h41
  2. [AJAX] Retour de valeur depuis le JS
    Par lodan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/10/2006, 08h13
  3. [INFOS][AJAX]Retour d'expérience
    Par SEMPERE Benjamin dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 28/09/2006, 16h43
  4. [AJAX] Retour xml
    Par Pollux dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/05/2006, 16h10
  5. [Ajax] Recupérer la valeur d'une liste
    Par Kaimann dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/02/2006, 18h22

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