AJAX ... Une vraie solution ???

Discussion dans 'Web, design' créé par guslinux, 2 Avril 2006.

Statut de la discussion:
Fermée.
  1. Offline
    guslinux Gamerz'ien
    bonne question : c le header de la requete ca permet d'avertir le script distant du type de données envoyées (je pense que c ca :p). C'est optionnel.
    guslinux, 7 Avril 2006
    #21
  2. Offline
    Bingo Beer Addict
    Oui je sais, mais pourquoi "x-www-form-urlencoded" ?
    Enfin je sais pas trop ce que fait ta page, mais ça m'étonnait juste qui tu fasses comme si la reqête venait d'un formulaire.
    Et pourquoi tu envoies ta requête en GET ? Si tu utilises "application/x-www-form-urlencoded", tu peux faire ça en POST.
    Bingo, 7 Avril 2006
    #22
  3. Offline
    Calvin80 Elite
    tiens.. il me semble que 'jai fait ça sans trop de soucis...
    je vais voir mon code et te tiens au courant
    Calvin80, 7 Avril 2006
    #23
  4. Offline
    Calvin80 Elite
    voila mon code

    donnees XML:
    Code:
    <response>
        <authorized>true</authorized>
        <userid>2</userid>
        <userlogin>calvin80</userlogin>
        <fullname>Try to guess..</fullname>
        <userpwd>123456</userpwd>
        <world>pluton</world>
        <server>164.XX.XX.XXX</server>
        <profiles>
           <profile id="1">profile 1</profile>
           <profile id="2">profile 2</profile>
           <profile id="3">profile 3</profile>
       </profiles>
    </response>
    
    Voici le treatement :

    Code:
    
    //-----------------------------------------------------------------------------
    function AutoConnectResponse()
    {
    	//alert("Serveur Response :"+xmlrequester.responseText);
    	loginresponse=xmlrequester.responseXML;
    	authorized=loginresponse.getElementsByTagName("authorized")[0];
    	if(!authorized)
    	{
    		errMsg="Cannot retrieve authorization from serveur !";
    		DisplayStatus("not connected");
    		DisplayStatusImg("disconnected");
    		return;
    	}
    	if(authorized.firstChild.nodeValue=="true")
    	{
    		window.gUser.userlogin=loginresponse.getElementsByTagName("userlogin")[0].firstChild.nodeValue;
    		window.gUser.userid=loginresponse.getElementsByTagName("userid")[0].firstChild.nodeValue;
    		window.gUser.userpwd=loginresponse.getElementsByTagName("userpwd")[0].firstChild.nodeValue;
    		window.gUser.world=loginresponse.getElementsByTagName("world")[0].firstChild.nodeValue;
    		window.gUser.server=loginresponse.getElementsByTagName("server")[0].firstChild.nodeValue;
    		
    		var fullname=loginresponse.getElementsByTagName("fullname")[0].firstChild.nodeValue;
    		window.gUser.galilei_connected=true;
    		//save Params
    		SaveParams();
    		//load profiles list
    		profiles=loginresponse.getElementsByTagName("profile");
    		window.gUser.profiles=new Array();
    		for (i=0;i<profiles.length; i++)
    		{
    			window.gUser.profiles[profiles[i].getAttribute("id")]=profiles[i].firstChild.nodeValue;
    		}
    		//change profilelist
    		window.DisplayProfiles();
    		DisplayStatus(window.gUser.userlogin+" connected");
    		DisplayStatusImg("connected");
    	}
    	else
    	{
    		errMsg=loginresponse.getElementsByTagName("errMsg")[0];
    		DisplayStatus("not connected");
    		DisplayStatusImg("disconnected");
    	}
    }
    
    //-----------------------------------------------------------------------------
    ]
    Calvin80, 7 Avril 2006
    #24
  5. Offline
    guslinux Gamerz'ien
    Un truc comme toi j'y était arrivé aussi, mais ici j'ai plusieurs <response> :
    Code:
    <root>
       <line>
          <Societe size="180px" align="">Edoplan</Societe>
          <Groupe size="150px" align="">Service informatique</Groupe>
          <Nom size="100px" align="">Massart</Nom>
          <Prenom size="100px" align="">Hugues</Prenom>
          <Tel size="100px" align="center">...</Tel>
          <GSM size="100px" align="center">...</GSM>
          <Fax size="100px" align="center">...</Fax>
       </line>
       <line>
           .....
       </line>
       <line>
           .....
       </line>
       <line>
           .....
       </line>
       <line>
           .....
       </line>
    </root>
    Et j'ai un bug bizzare ...

    Charger les lignes :
    Code:
    var x = xmlDoc.getElementsByTagName('root');
    	x = x[0].childNodes;
    Chose très currieuse : avec FireFox x[0].childNodes.length=15 et avec IE x[1].childNodes.length=7

    de meme les élément ne sont pas bien traités sour FireFox ... un truc de fou !!

    => http://devel.edoplan.be/Soft_Gestion/EDT-Contacts/V0/document.html
    http://devel.edoplan.be/Soft_Gestion/EDT-Contacts/V0/js/XML.js
    guslinux, 7 Avril 2006
    #25
  6. Offline
    Bingo Beer Addict
    Bingo, 7 Avril 2006
    #26
  7. Offline
    guslinux Gamerz'ien


    vi ca vient de là ca j'en suis sur mais en fait quand j'ai rien dans mon field => il merde ! ici j'ai mis des xx quand j'avais rien et ca marche ... il faut donc ajouter un test avant d'acceder à la propriété !
    guslinux, 7 Avril 2006
    #27
  8. Offline
    guslinux Gamerz'ien
    et voilaaa
    Code:
    			if(x[i].childNodes[j].hasChildNodes())
    				var theData = document.createTextNode(x[i].childNodes[j].firstChild.nodeValue);
    			else var theData = document.createTextNode(" ");
    Mtn ca tourne ... ouff !!!

    Au fait, j'ai pas utilisé xmlHttpRequest mais XMLDOM (ca tourne +/- de la meme manière) :
    Code:
    function importXML(request)
    {
    	if (document.implementation && document.implementation.createDocument)
    	{
    		xmlDoc = document.implementation.createDocument("", "", null);
    		xmlDoc.onload = traitement_http;
    	}
    	else if (window.ActiveXObject)
    	{
    		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    		xmlDoc.onreadystatechange = function () {
    			if (xmlDoc.readyState == 4) traitement_http()
    		};
     	}
    	else
    	{
    		alert('Your browser can\'t handle this script');
    		return;
    	}
    	xmlDoc.load(request);
    }
    guslinux, 7 Avril 2006
    #28
  9. Offline
    guslinux Gamerz'ien
    Ca y est ca marche :D

    La démo ici

    Si vous cliquez sur la tete de liste ca trie en fonction du champ cliqué.
    1e click = tri A-Z, 2e click = tri Z-A
    guslinux, 7 Avril 2006
    #29
  10. Offline
    Bingo Beer Addict
    Ah ouais sympa !
    Il faut vraiment que je m'y mette ! :)
    Bingo, 7 Avril 2006
    #30
  11. Offline
    guslinux Gamerz'ien
    En fait c relativement "bete" j'ai un objet php qui gere les listing et qui est prévu pour tourner avec $_GET & $_POST. Je l'ai modifié pour qu'il me génère un xml, et le xml est traiter via javascript...

    Ici j'ai traiter avec le $_GET, mtn faut que je fasse pour le $_POST... j'ai ma petite idée là dessu :p

    Nb : On pourrait meme imaginer avoir une actualisation continuelle des données du listing (toutes les 10secondes par exemple) et avoir une appli se raprochant du real time !!!!!!!!
    guslinux, 7 Avril 2006
    #31
Statut de la discussion:
Fermée.