11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à toutes et à tous,

Je suis confronté à un soucis, et je ne sais pas par quel bout le prendre.

Je développe un site en utilisant Javascript (en utilisant prototype.js), AJAX et PHP.
AJAX permettant de faire transiter des données saisies entre javascript et PHP grâce à JSON.

Depuis mon poste professionnel (au bureau) ou personnel (à la maison), et depuis la majorité des autres postes, pas de soucis. Et ce quelque soit la longueur de la chaîne JSON passer en méthode post.

Par contre, la semaine dernière, je dispense une formation sur le produit développé et là catastrophe : l'appel AJAX n'aboutit pas.

Alors, au début je mets ça sur le dos de la connexion internet (512k effectif) partagée sur plusieurs postes. Mais apparemment non.
Je fais divers test sur la machine de formation, et il s'avère que sur des appels avec un JSON court, tout se déroule bien. Mais passé les 500 caractères, il se perd dans le vide, que se soit sous FF ou IE. Alors que l'année dernière (le site a une activité cyclique et annuelle) certaines pages, qui n'ont pas été modifiées, fonctionnaient très bien.

Là où ça me pose un soucis, c'est qu'il s'agit d'un site de déclaration d'une taxe professionnelle, et qu'il se pourrait que ce cas de figure se produise chez un des déclarants.

J'ai cherché du coté d'une configuration de proxy, de firewall, des navigateurs mais je n'ai rien trouver de probant.
Et je n'ai pas la moindre idée de comment chercher d'où provient ce problème pour le comprendre et essayer de le résoudre ou de le contourner.

Quelqu'un aurait il une idée ?

Merci d'avance Smiley cligne
Bonjour,

Je ne pense pas que cette limitation que tu observe soit dû au JSON lui même ou a un firewall. Tu dois regarder plutôt du coté d'AJAX, car suivant la méthode que tu utilise (POST ou GET) tu es plus ou moins limité dans les données.

Regarde cet article.
As-tu essayé d'appeler le script PHP directement pour voir si le problème est bien du côté client (ajax) ou du côté serveur (problème de timeout ou de dépassement de mémoire de PHP par exemple) ?

Si le problème est effectivement du côté de la requête ajax le problème doit être au niveau du réseau.

Récupères-tu une erreur type "HTTP Error 504 (proxy timeout)" ?
De mémoire les proxy ont une "configuration timeout" qui pourrait expliquer que ta requête cloque après 500 caractères.
Merci pour vos réponses rapides Smiley cligne

@KalNex : j'utilise une méthode POST pour éviter d'avoir ce genre de soucis.

@moust : oui, j'ai fait le test. Pas de soucis, le script s'exécute bien.
Et l'appel AJAX ne renvoie aucune erreur. Juste il n'aboutit pas et au bout de 30 secondes, il s’arrête.
Et un appel HTTP sans Ajax (via le navigateur par exemple aboutit-il à quelque chose ?
oui, il aboutit au résultat espéré.

Apparemment, c'est simplement de passer la chaîne JSON en méthode post qui pose problème.
Le script PHP ne pose pas de problème.

Je rajouterai même que, sur le même appel, si je raccourci la taille du JSON, le script aboutit.
Arrivé à 501 caractères, il plante.
Modifié par Leorilan (10 Jan 2011 - 12:03)
Oui j'utilise prototype.
Ce qui est le cas depuis plusieurs années, et ce problème, sur les même machines, n'apparaissait pas.
Je reviens avec des infos supplémentaires.

L'organisme de formation étant dans le même batiment que nous, je me suis tapé le culot de demandé à prendre une machine pour la brancher sur la box club internet de chez nous (ligne de surveillance et de secours, rassurez vous, on travaille avec de la fibre Smiley biggrin ).
Ce que j'ai fait.

Et là .... pas de problème.
Tout marche bien.

Le responsable de l'organisme n'étant pas là cette semaine, j'y retourne lundi pour voir quelle est la configuration du routeur.
D'après certaines infos, il s'agirait d'une box orange.

Si quelqu'un a des infos sur le sujet avec ces précisions, je suis toujours preneur Smiley cligne
Le plus simple est de te renseigner au près de l'administrateur réseau pour savoir s'il y a une configuration réseau particulière qui serait à l'origine du problème.