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

Bibliothèques & Frameworks Discussion :

Taille limite réponse xml du serveur [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Taille limite réponse xml du serveur
    Bonjour.
    Je viens vers vous parce que la je bloque vraiment.
    Je m'explique.
    J'ai un serveur qui repond a une requete ajax en envoyant des données au format Xml.
    Sous FF, je les parse sans problemes, mais sous IE, il ne trouve aucun noeud de mon fichier XML.
    Le problème est que cela marchait avant.

    Je me suis rendu compte qu'a partir d'une certaine quantité de données, IE merde. Quand j'affiche la reponse en text, il manque la fin du fichier (environ 8000 caracteres), ce qui fait un fichier Xml non valide, raison pour laquelle il ne peut pas trouver les noeuds. Le plus drole est que quand je veux afficher les derniers caracteres (substr), il les trouve sans problemes

    Par conséquent il est aussi impossible d'afficher une chaine de caracteres de plus de 8000 caracteres avec la commande alert sous IE...il s'arrete largement avant...surement pas sécurité

    Avez vous deja rencontrer ce genre de probleme et si oui, avez vous une solution.

    Merci

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par JoTitan
    Avez vous deja rencontrer ce genre de probleme et si oui, avez vous une solution.
    Non, jamais vu

    Tu peux nous passer les exemples qui ne fonctionnent pas?

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Ben pour se rendre compte que le alert de ie n'affiche pas tout, j'ai collé une longue chaine dans un alert et j'ai regardé.

    Sinon, pour le reste, c'est impressionant, car la fonction anaylse bien quand il n'y a pas un max de données mais des qu'on augmente, ca va plus.

    La structure du fichier est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <header param1="" param2="">
    <option name="" value="">
    <option name="" value="">
    <option name="" value="">
    </header>
    Pour la fonction javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function analyseUsersOfGroup(){
    if (XhrObj.readyState == 4 && XhrObj.status == 200){
    node = XhrObj.responseXML;
     
    header = node.getElementsByTagName('header')[0]; 
     
    idIn = header.getAttribute('param1');
    Je ne marque pas la fin, ca plante a la derniere ligne (idIn) car le header ne correspond a rien (il ne le trouve pas). Quand j'affiche la reponse (responseText) avec de longues données, la fin n'apparait pas...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Meme probleme de mon coté, la taille de la reponse semble etre limitée à 8Ko.
    Je sais que c'est un mauvais design de devoir passer bcps de données par ajax mais bon la ca m'arrangerait bien quand meme.

    Est ce que quelqu'un a progressé sur le sujet?

    Merci!
    - ju

  5. #5
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    t'as regardé dans ton fichier de configuration la taille d'envoie par POST???

    c'est le fichier qui permet aussi de modifier le timeout

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    J'ai résolu le pb de mon coté.
    L'implementation coté server est en java (sur tomcat), apparemment il suffisait d'étendre le buffer de l'objet Response sur le serveur.
    Donc ca marche pour moi ... jusqu'a la prochaine limitation!!

  7. #7
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    est-ce que quelqu'un a eu le même problème en PHP ? Parce que j'ai comme l'impression que j'ai le même souci.

    J'ai une table de tous les pays du monde avec leurs codes respectifs, et je souhaite afficher mon formulaire avec une listbox contenant justement tous les codes pays et leur description. Ce qui fait en gros 245 "<option value="CODE">Country descr</option>".

    Lors que je limite ma query à tous les codes commençant par A, ça passe, dès que j'augmente un peu trop.... ça casse !

    Heeeeelp


  8. #8
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Personne n'a eu le même problème ? J'peux pas l'croire ça !! j'suis complètement bloqué et si je ne trouve pas de solution, j'suis bon pour repartir depuis le début en abandonnant AJAX :-(

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Points : 151
    Points
    151
    Par défaut
    Incomprehensible je dois dire ! je charge des listes de clients enormes dans mon application ( ~20 000) sans aucun probleme... C'est quoi comme base de données ? Personnelement je suis sur une sybase SQL Anywhere, le probleme provient peut-etre de la !

  10. #10
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    ça me paraitrait bizarre que ça vienne de la base de données quand même... mais je vais quand même regarder.

    C'est une base MySQL 5.

    Comme dit... lorsque je limite le résultat, ça passe et sitôt que je passe un certain seuil... crack, c'est fini :-(

  11. #11
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    De manière un peu plus générale, en fait, si quelqu'un sait s'il y a réellement une limite de la taille des données qu'un navigateur peut récupérer en POST Data depuis un serveur distant, j'aimerais beaucoup la connaitre.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Ça y est, j'ai ENFIN la confirmation qu'il y a bien une taille limite pour les headers renvoyés depuis le serveur.
    Dans l'outils que je suis en train de développer, j'utiliser Prototype, et la fonction json_encode pour dialoguer entre le client et le serveur. Pour ceux qui se demandent quel est l'intérêt, c'est l'aisance avec laquelle Prototype gère des réponses encodées au format JSON et qui permet donc de récupérer aisément une réponse et de la traiter comme un objet.

    Bref, dans mon script côté serveur, je faisais un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("X-JSON: ".json_encode($object->$_POST["tbi_method"]($method_params)));
    et côté client, je faisais un:
    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
    var myAjaxRequest = new Ajax.Request('lib/ajax_engine/ajax_dynamic_scripting_engine.php',
    		{
    	        method: 'POST',
    	        parameters: $H({'src_object_type': src_object_type, 'src_object_name': src_object_name, 'src_object_id': src_object_id, 'tbi_method': tbi_method, 'tbi_method_params':tbi_method_params}).toQueryString(),
    	        onComplete: function(response, jsonObject)
    			{
    				if(null == jsonObject)
    	            {
    	                //alert("JSON response is null");
    	                //$('xml_text').value = response.responseText;
    	            }
    	            else
    	            {
    	            	if(handleHTTPResponseJSON(jsonObject))
    	            	{
    	            		if(jsonObject.CONTEXT.UPDATE == "true")
    						{
    							$('context_src_object_type').value = src_object_type;
    							$('context_src_object_name').value = src_object_name;
    							$('context_src_object_id').value = src_object_id;
    							$('context_tbi_method').value = tbi_method;
    							$('context_tbi_method_params').value = tbi_method_params;
     
    						}
    	            	}
     
    	            }
    			}
    	    });
    ...et puis, ce matin, je suis tombé sur cet article. Du coup, j'ai bien vite essayé de changer mon script côté serveur et ai remplacé mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("X-JSON: ".json_encode($object->$_POST["tbi_method"]($method_params)));
    par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo json_encode($object->$_POST["tbi_method"]($method_params));
    et là... comme par miracle l'ensemble de ma réponse est arrivée jusqu'au client. Bien entendu, mon code côté client n'est pas fait pour récupérer l'objet json dans le body de la réponse, mais je ferai en sorte que ça fonctionne et mon problème sera résolu !!

    Voili, voilou les p'tits loups !

  13. #13
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Depuis le 1er mai, Prototype a sorti une version 1.5.1 de sa bibliothèque de prototypage Javascript. Ainsi, grâce à cette version, il devient possible de faire ceci:


    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
    var myAjaxRequest = new Ajax.Request('lib/ajax_engine/ajax_dynamic_scripting_engine.php',
    {
        method: 'POST',
        parameters: $H({'src_object_type': src_object_type, 'src_object_name': src_object_name, 'src_object_id': src_object_id, 'tbi_method': tbi_method, 'tbi_method_params':tbi_method_params}).toQueryString(),
     
    	        onComplete: function(response, jsonObject)
    		{
    			if(null == jsonObject)
                           {
    	                    $jsonObject = response.responseText.evalJSON();
                           }
                           else
                           {
                                ...
    	               }
                    }
    	}
    });
    Portez votre attention sur la fonction evalJSON() appliquée directement à un objet de type "String". Apparavant, cette méthode n'était disponible que sur l'objet response mais pas sur n'importe quelle chaîne de caractères. Ainsi, il devient possible de dialoguer aisément avec le serveur grâce à ce formalisme d'objets MAIS sans limite de taille de la réponse !!!

    Elle est pas belle la vie ?

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

Discussions similaires

  1. [AJAX] Taille limite sur XML ?
    Par agequodagis dans le forum AJAX
    Réponses: 1
    Dernier message: 18/01/2010, 17h23
  2. [AJAX] Trouver un serveur web qui retourne réponse xml
    Par pierrot2908 dans le forum AJAX
    Réponses: 11
    Dernier message: 01/07/2009, 09h39
  3. Réponses: 21
    Dernier message: 06/02/2007, 13h05
  4. Taille limite d'une réponse?
    Par Fonzy007 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/09/2006, 09h13
  5. Envoi d'une réponse XML REST par un serveur Linux
    Par MayaLeChat dans le forum REST
    Réponses: 6
    Dernier message: 08/03/2006, 14h29

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