J'utilise prototype.js et son objet Ajax pour implémenter un widget graphique interactif. Je génère une requête XML pour les données que l'utilisateur veut, POST le serveur au serveur avec une requête Ajax, et il semble prendre une éternité avec Firefox. La console Firebug semble montrer que le POST se termine avec 200 OK en environ 700 ms, mais le gestionnaire onInteractive() que j'ai installé (quel prototype déclenche quand readyState == 3) se déclenche plusieurs fois au cours des prochains TWELVE SECONDS, puis mon processus onSuccess les données. Tout le monde sait ce qui se passe ici avant que je creuse dans le code?Pourquoi la requête Ajax de prototype est-elle si longue à traiter?
Répondre
Il s'est avéré que Firebug affichait la fin du POST quand readystate avait 4 ans, mais ne signalait pas la transaction complète jusqu'à ce que mon gestionnaire onSuccess ait fini, et le mégaoctet de XML qui prenait tout un tandis que. Le passage à la représentation JSON plus compacte au lieu de XML réduit le XML fastidieux à l'analyse syntaxique, plus ou moins:
eval(responseText); doGraph();
Merci pour les commentaires, les gars, ils ne sont pas exactement ce que je avais besoin, mais ils me pointe dans la droite direction, et la fonctionnalité fonctionne maintenant très lisse.
Avec readyState 3, la demande XHR est toujours en cours, ce qui peut déclencher votre gestionnaire onInteractive
plusieurs fois. Qu'est ce que ça fait? Pourquoi ne pouvez-vous pas utiliser un callback et le faire virer sur readyState === 4
? En outre, vous pouvez essayer d'utiliser le panneau net de Firebug (onglet 'Net' en haut) pour voir ce qui prend tout ce temps.
Tout le gestionnaire "onInteractive" est log qu'il a tiré; c'est strictement pour le débogage. J'essayais de comprendre pourquoi cela prenait si longtemps après que Firebug ait prétendu que le XHR était fini. L'onglet Net est une bonne idée, merci. – Berry
- 1. Utilisation de méthodes de rappel propres à la requête AJAX dans le prototype
- 2. Requête Ajax avec prototype - Qu'est-ce que le transport si ce n'est pas seulement responseText?
- 3. Ajax Odomètre avec prototype?
- 4. Très longue requête
- 5. comment créer un nouvel objet AJAX à l'aide du prototype
- 6. requête ajax avec retours de prototype 200 succès avec page html vierge (intermittent)
- 7. domaine Cross requête Ajax à partir de fichier js
- 8. Requête PowerShell: comment traiter un fichier
- 9. De jQuery à Prototype
- 10. Comment effectuer des requêtes AJAX à interrogation longue dans ASP.NET MVC?
- 11. Traitement d'un webrequest de longue durée
- 12. Commencer et surveiller les progrès sur les requêtes SQL à exécution longue via ajax
- 13. Meilleure façon d'exécuter une longue requête DB dans ASP classique?
- 14. Réponse POST trop longue
- 15. requête externe à la liste que si son nombre de lignes équivaut à sous-requête interne
- 16. Ajax - Je dois vérifier si une session valide existe avant chaque requête AJAX
- 17. Pourquoi suis-je incapable de récupérer la hauteur de contenu calculée insérée en réponse à une requête jQuery AJAX?
- 18. PHP vérifie si la requête entrante est de type JSON
- 19. JQuery $ .ajax et de traiter avec un resultset
- 20. Réinitialiser la force sur une requête ajax?
- 21. En utilisant will_paginate sans: total_entries pour améliorer une longue requête
- 22. Optimisation de requête - Pourquoi cela accélère-t-il la requête?
- 23. Annulation gracieuse d'une requête Ajax
- 24. envoyer une requête ajax
- 25. La requête jQuery AJAX échoue dans IE
- 26. Saisie de formulaire d'enregistrement automatique à l'aide de Prototype et de PHP
- 27. JQuery ajax fonction d'erreur est exécutée même si la requête est réussie
- 28. Javascript - vérifier si le prototype de méthode a été changé?
- 29. Le client/serveur db4o semble pouvoir uniquement traiter une requête à la fois?
- 30. Prototype Ajax aide de la fonction lors de l'utilisation du plugin Starbox (système d'évaluation)
Combien rapportez-vous dans votre réponse? –
Environ un mégaoctet de texte XML, en fonction de la plage de requêtes. – Berry
Un script awk rapide montre plus tard qu'une représentation JSON plus ou moins compacte sera d'environ 20 fois plus petite, donc le script côté serveur est ici. J'espérais l'éviter - mieux vaut avoir une chose à maintenir que deux - mais le gain de performance en vaudra la peine. – Berry