Problème limite d'une variable atteinte [JS] - HTML/CSS - Programmation
Marsh Posté le 27-06-2013 à 11:15:15
Bonjour,
Pourquoi ne pas utiliser des variables tableaux ?
Cordialement
Marsh Posté le 27-06-2013 à 11:33:19
Bonjour
En effet c'est ce que j'essai pour le moment de faire.
Code :
|
J'ai bien un tableau avec 1720 ligne de stocker
reste maintenant le passage dans PHP car normalement j'envoyais ma variable via ajax a une page PHP
je décomposait la variable grâce au séparateur pour faire un traitement de lot de chaque dossier (ID).
Faut que je vois donc maintenant comment PHP interprète le tableau Javascript que je lui envoie.
Marsh Posté le 27-06-2013 à 11:40:25
il va falloir sérialiser votre variable tableau pour pouvoir le transmettre.
J'ai déjà eu a le faire entre JS et PHP
http://www.siteduzero.com/informat [...] -serialize
Marsh Posté le 27-06-2013 à 12:07:03
hyptnos a écrit : J'ai donc remarqué que ma variable arrêtait de se compléter au bout d'un moment. J'ai compter le nombre de caractère et il s'arrête a 10000 caractères |
C'est pas le cas: http://jsfiddle.net/DVrkV/
Et http://jsfiddle.net/DVrkV/2/ montre ce que je comprend de ton truc avec 2000 inputs (pour un résultat de 18000 caractères), fonctionne sous Firefox, Safari et Chrome
Marsh Posté le 27-06-2013 à 12:07:05
C'est un tableau simple associatif du type
1 => 00000
2 => 00001
3 => 00002
du coup cela se passe tres car PHP le reconnais comme une variable simple mais avec des virgules de séparation du coup cela change rien presque a mon code php initial ou je faisais un traitement avec le séparateur que j'avais inclus (le /) donc j'ai modifié le traitement pour qu'il prenne la virgule comme séparateur (vu que c'est que des nombre)
cependant le passage AJAX ne doit plus etre en GET à cause de la limite URL, du coup j'ai fait un passage en POST et ça roule
Marsh Posté le 27-06-2013 à 12:10:31
À noter que le code posté reste immonde, et que pour transférer un minimum proprement ton truc tu peux (devrais) sérialiser et désérialiser en JSON.
Marsh Posté le 27-06-2013 à 12:16:29
masklinn a écrit :
Et http://jsfiddle.net/DVrkV/2/ montre ce que je comprend de ton truc avec 2000 inputs (pour un résultat de 18000 caractères), fonctionne sous Firefox, Safari et Chrome |
Pourtant j'ai fait un copie coller de la variable dans un éditeur de texte et le compteur reste bien bloqué à 10000 caractère (sur une ligne).
Donc je comprend pas vraiment où se situe le soucis.
Edit : cela viendrai plus d'un soucis de concaténation (+=) apparemment.
Marsh Posté le 27-06-2013 à 12:17:00
masklinn a écrit : À noter que le code posté reste immonde, et que pour transférer un minimum proprement ton truc tu peux (devrais) sérialiser et désérialiser en JSON. |
Je ne me suis pas encore pencher sur le JSON, faudrait que je m'y mette un de c'est jour :s
Marsh Posté le 27-06-2013 à 12:56:44
hyptnos a écrit : Pourtant j'ai fait un copie coller de la variable dans un éditeur de texte et le compteur reste bien bloqué à 10000 caractère (sur une ligne). Edit : cela viendrai plus d'un soucis de concaténation (+=) apparemment. |
Nope, voici une version qui utilise la concaténation de chaînes au lieu d'un tableau pour faire son accumulation: http://jsfiddle.net/DVrkV/4/
Marsh Posté le 27-06-2013 à 13:07:15
Bon bah alors je ne comprend pas du tout ce qui se passe car malheureusement avec l'exemple donné au tout début la variable s'arrêtait belle et bien à 10000 caractères.
Le pourquoi du comment je n'en saurais rien. J'ai pu voir (difficilement) que d'autre personne ont eu des problèmes similaire de blocage à 10 000 caractères, sans non plus savoir pourquoi.
Marsh Posté le 27-06-2013 à 15:15:09
Franchement je vois pas pourquoi vous essayez tellement de bidouiller quelque chose qui ne marche pas.
Et puis faire du traitement en Javascript c'est quand même abuser, limite dangereux quand même
Le traitement doit se faire coté serveur
Il faut SERIALISER en php
Marsh Posté le 27-06-2013 à 18:45:59
thorak83 a écrit : Franchement je vois pas pourquoi vous essayez tellement de bidouiller quelque chose qui ne marche pas. Et puis faire du traitement en Javascript c'est quand même abuser, limite dangereux quand même Le traitement doit se faire coté serveur Il faut SERIALISER en php |
Vu le niveau de tes contributions, tu devrais te calmer un peu
Le JSON, c'est de la sérialisation
Et "sérialiser en PHP" ça ne veut strictement rien dire
Marsh Posté le 28-06-2013 à 08:47:18
thorak83 a écrit : Franchement je vois pas pourquoi vous essayez tellement de bidouiller quelque chose qui ne marche pas. |
Je ne fais pas de traitement coté JAVASCRIPT.
Justement j'envois tout à PHP pour que ce soit lui qui gère tout ce qu'il y à a gérer. A l'origine tout fonctionnais bien les ID etait stocker dans une variable JS séparer d'un "/" et le tout envoyer à PHP via Ajax. hier j'ai rencontrer un Bug, un grand nombre de dossier par rapport à d'habitude à fait que cela ne fonctionnait plus. Et comme dit, j'ai juste remarquer que m'a variable JS arrêtais de se remplir à partir de 10000 caractères. POurquoi ? Comment ? j'en sais rien !! Mais je traitement pas mes dossiers en JS non plus j'ai jamais dis cela. Le seul traitement ici la c'est la récupération des Checkbox Coché et récupérer leur valeur c'est tout.
Après j'ai pas dis que ce que j'avais fait était bon, était parfait ou quoique ce soit.
Le JSON ne m'ait pas venu à l'esprit car je n'ai pour le moment pas eu le temps de me pencher dessus, il est vrai qu'il faudrait que je m'y mette.
Donc oui là c'est un peu du bidouillage (quoique le stockage d'ID dans un tableau JS est tout de même plus propre que dans une simple variable) mais ça fonctionne. Mais je ne peux pas à ce jour tout retoucher sur cette application. J'ai des contraintes technique qui me brident considérablement la maintenance et l'évolution de cette application. La je devais trouver une solution rapide et simple à mettre en place car les dossiers devaient être à tout pris générer.
De toute façon j'ai contourner le soucis, même si c'est pas ce qu'il y à de mieux, pour le moment cela fonctionne
Marsh Posté le 27-06-2013 à 10:27:21
Bonjour à tous.
Je suis face à un problème assez emmerdant. J'ai une application PHP / MYSQL / AJAX qui jusqu'à ce jour fonctionnait bien.
Elle à pour but de générer des documents officiels de mon taf au format PDF de dossier pro.
On a une liste de dossier activée et des checkbox. Le but est normalement de générer tout d'un coup
Là j'ai environ 1750 dossier à générer , donc 1950 checkbox de coché
Jusque là tout va bien
J'active la génération et boom ca fonctionne pas.
Pas de message d'erreur, pas d'erreur mozilla, ni php, ni mysql, les log sont vide.
J'ai remarquer ensuite que cela vient de JS je m'explique.
Je boucle donc sur les checkbox et retient seulement ceux qui sont "checked"
Si c'est le cas j'ajoute dans une variable JS l'ID du dossier suivi d'un "/" jusqu'à ce que la boucle se termine.
Après j'envois à une requete PHP (via Ajax) cette variable pour le traitement.
J'ai donc remarqué que ma variable arrêtait de se compléter au bout d'un moment. J'ai compter le nombre de caractère et il s'arrête a 10000 caractères
j'en déduit donc que 10000 est la limite maximal de stockage pour une variable JS
Ma question est, est ce que je peux contourner ce problème si oui , comment ?
merci par avance.
pour permettre de mieux comprendre voici le bout de code de la boucle
Dans l'exemple c'est tabDemande qui s'arrête à 10000 Caractères
ID = 5 caractères
la séparation = 1 caractères
soit 6 caractère multiplié par 1727 dossiers au total ce qui donne 10362 caractères
Et le faire sur 2 ou 3 variable différente cela me gène assez faudrait une solution en 1 shot.
Thx
Message édité par hyptnos le 27-06-2013 à 10:30:13