Parcourir un form en JavaScript

Statut
N'est pas ouverte pour d'autres réponses.

guslinux

Gamerz'ien
Salut à tous,

J'utilise l'objet xmlhttprequest depuis un certain temps, mais sans jamais utiliser la méthode post. Et comme d'habitude quand je suis en blocus j'ai des idées :-D.

L'idée est la suivante :
Un objet form contiend normalement tous les input dans un tableau : form.elements[]. Pour réaliser un post aussi facilement que de la manière habituelle, il suffit dont de faire une boucle sur tous les éléments et de faire un traitement adapté à chaque type d'input.

Voici le code :
Code:
   function get(form) {
       post_string = "";
       for(i=0;i<form.length;i++){
           if (form.elements[i].type=="text" || form.elements[i].type=="textarea")
              post_string += "&"+form.elements[i].name+"="+encodeURI(form.elements[i].value);
       }
      var poststr = post_string.substr(1);
      makePOSTRequest('trt_post.php', poststr);
   }
La fonction ne fait que formater la chaine à envoyer via la méthode post.

Ce principe fonctionne super avec FireFox ... mais avec IE c'est une autre histoire.
Impossible de définir le nombre d'élements présents dans le formulaire.

le script est dispo à cette adresse : http://www.edt-eng.be/AJAX/post.html
 
1er
OP
guslinux

guslinux

Gamerz'ien
J'ai trouvé merci =]

C'était une question de passage d'argument.

Le script final est toujours sur le serveur.
 
A

Anon0A

ex membre
Je l'avais sur le bout de la langue !
 

xlr8

Over the rainbow 🌈
Lol Guslinux qui fait semblant de se tromper de forum, on t'as repéré hein Gus :D
 

SkYlEsS

Elite
C'est mignon ... mais à quoi ça sert ? :-D
 
1er
OP
guslinux

guslinux

Gamerz'ien
SkYlEsS a dit:
C'est mignon ... mais à quoi ça sert ? :-D
Le but est simple : Pouvoir envoyer des formulaires en AJAX aussi facilement que via la technique habituelle. A l'heure actuelle tu dois traiter chaque formulaire et chaque champ de ce formulaire de manière spécifique. Avec mon script plus de problèmes de ce genre. Tu défini une action au onSubmit() et hop le script fait le reste et envoie des données par post à un script php distant.

De ce fait, l'ajout d'un champ dans ton formulaire, ou la réutilisation de cette méthode sur un autre formulaire ne prends pas plus de temps qu'avec un formulaire normal.

:-D
 
1er
OP
guslinux

guslinux

Gamerz'ien
xlr8 a dit:
Lol Guslinux qui fait semblant de se tromper de forum, on t'as repéré hein Gus :D
j'ai bloqué là dessu pendant une demi heure là dessu avant de voir que c'était une connerie ^^

Le code final de la fonction qui formate tous les champs d'un formulaire pour les transmettre à l'aide de l'objet xmlhttprequest :
Code:
   function get(form) {
       post_string = "";
       tableau = new Array();
       for(i=0;i<form.length;i++){
           elt = form.elements[i];
           switch(elt.type){
                 case "text" :
                 case "button" :
                 case "submit" :
                 case "select-one" :
                 case "textarea" :
                       value = encodeURI(elt.value);
                       break;
                       
                 case "checkbox" :
                 case "radio" :
                       value = (elt.checked)?encodeURI(elt.value):"";;
                       break;
                       
                 case "select-multiple" :
                       for(a=0;a<elt.length;a++){
                         if(elt.options[a].selected==true)
                             tableau.push(encodeURI(elt.options[a].value));
                       }
                       break;
                 default :
                       value = elt.type+"";
           }

           if(value!="")
                 post_string += "&"+elt.name+"="+value;

           if(tableau.length>0){
                   for(a=0;a<tableau.length;a++){
                        post_string += "&"+elt.name+"[]="+tableau[a];
                   }
                   tableau = new Array();
           }

       }
      var poststr = post_string.substr(1);
      makePOSTRequest('trt_post.php', poststr);
   }
Un autre truc sympa : http://www.edt-eng.be/AJAX/auto/

C'est pas encore totalement fini :=) mais le principe est là ^^
 

SkYlEsS

Elite
Voilà qui pourrait servir à DeScH tiens ... ;-D

Je veux bien être tenu au courant de tes avancées, elles m'intéressent :p
 
1er
OP
guslinux

guslinux

Gamerz'ien
SkYlEsS a dit:
Voilà qui pourrait servir à DeScH tiens ... ;-D

Je veux bien être tenu au courant de tes avancées, elles m'intéressent :p
bein dison que ces modules sont finis :D le reste ca sera intégré dans un mini ERP, et surement utilisé par une chaine de grandes surface connue ;) donc je peux pas divulguer les sources complètes :-9
 

II phl II

Touriste
simple curiosité, ton mini ERP tu le codes en quoi ?
 
1er
OP
guslinux

guslinux

Gamerz'ien
II phl II a dit:
simple curiosité, ton mini ERP tu le codes en quoi ?
en php... ca peut sembler minable mais perso je trouve que ca tourne pas mal, et en plus niveau mise en place c'est que du libre, donc ca limite les problèmes de licence/mises à jour etc...
 

II phl II

Touriste
SkYlEsS a dit:
Enterprise Resource Planning ou Progiciel de gestion intégrée pour les français

Non ça ne me semble pas minable du tout.
C'est juste que la plupart sont développés dans des languages orientés objets il me semble donc je ne voyais pas d'où pouvait venir le Javascript ;)
Mais pour un mini ERP comme tu dis, j trouve ça très bien le php :)

Courage et bonne continuation :proud:
 
1er
OP
guslinux

guslinux

Gamerz'ien
II phl II a dit:
Enterprise Resource Planning ou Progiciel de gestion intégrée pour les français

Non ça ne me semble pas minable du tout.
C'est juste que la plupart sont développés dans des languages orientés objets il me semble donc je ne voyais pas d'où pouvait venir le Javascript ;)
Mais pour un mini ERP comme tu dis, j trouve ça très bien le php :)

Courage et bonne continuation :proud:
Ce que j'aime bien dans le php c'est que apres 1 TFE et 2 ans de boulot avec ca apres mes heures de cours je maitrise correctement. On sait aussi faire de l'orienté objet en php.

Un autre avantage c'est qu'on est maitre de tout, de plus on est obligé de scinder le code métier et la partie affichage des données. Ca c'est le principe des applications web qui veut ca, et je trouve que c'est particulièrement pratique.

Le désavantage de tout ca, c'est que on doit connaitre le php, l'html, le css et le javascript.

Avec l'arrivée de l'AJAX (qui existe depuis longtemps quand meme ^^) ce sont de nouvelles possibilités qui s'ouvrent à ce genre d'applications.

Petit exmple : j'ai un objet php qui gere les listings : il scinde les listes en pages, il permet les recherches sur chaque colonne ainsi que le tri. Ce système est très performant et permet pas mal de choses. Le problème était que pour chaque action, on rechargait toute la page : c'était trops lourd pour une utilisation via internet.

Avec l'AJAX, je ne charge qu'un listing vide, les données sont chargées via un javascript qui prend les données au format xml, données formatées par un script php auxiliaire. Au niveau temps de réponse du programme j'ai vu une avancée flagrante !! de plus ca a permi de diminuer les données transmises.

Le revers de la médaille est que j'ai du implémenté une communication entre mes deux scripts... mais le jeux en vaut vraiment la chandelle !!

La dernière chose que j'ai essayées, ce sont les objets en JavaScript .... c'est plus compliqué que les objets en php,C++ ou Java, mais une fois qu'on a compris le système c'est géant : un p'tit constructeur avec des arguments bien choisis et n'importe quel élément de la page peut devenir actif !! j'en revient toujours pas :-D
 

II phl II

Touriste
oui c'est clair que l'ajax dynamise vraiment pas mal nos pages :) et évite les rechargements lourds et pénibles

par language OO je voulais dire C++ et compagnie :p (j savais que le php pouvait etre orienté objet :oops: )

Ce serait vraiment top de voir le résultat final (l'application, pas le code) en tout cas mais je ne sais pas si tu seras d'accord et surtout si tu pourras (par rapport à la boîte qui t'a commandé ça)
 
1er
OP
guslinux

guslinux

Gamerz'ien
II phl II a dit:
oui c'est clair que l'ajax dynamise vraiment pas mal nos pages :) et évite les rechargements lourds et pénibles

par language OO je voulais dire C++ et compagnie :p (j savais que le php pouvait etre orienté objet :oops: )

Ce serait vraiment top de voir le résultat final (l'application, pas le code) en tout cas mais je ne sais pas si tu seras d'accord et surtout si tu pourras (par rapport à la boîte qui t'a commandé ça)
L'ERP en tant que tel n'est pas encore en route, il est à l'état de projet.... mais je peux montrer un projet plus simple basé sur le même "framework"

http://devel.edoplan.be/Bulletins_ATC/V0/index.php
gamerz/gamerz

:-D
 

II phl II

Touriste
très sympa comme interface en tout cas :)
 
On sait aussi faire de l'orienté objet en php.
PHP n'est pas à la base un langage Objet. Aujourd'hui, il ne fait pas encore le poids avec des langages tels que Java au niveau Objet.

Malheureusement (ou heureusement ?), PHPH se dirige vers plus de fonctionnalités Objet, contrairement à ce qu'a voulu son créateur au départ.
 
1er
OP
guslinux

guslinux

Gamerz'ien
Loetheri a dit:
PHP n'est pas à la base un langage Objet. Aujourd'hui, il ne fait pas encore le poids avec des langages tels que Java au niveau Objet.

Malheureusement (ou heureusement ?), PHPH se dirige vers plus de fonctionnalités Objet, contrairement à ce qu'a voulu son créateur au départ.
Quand on voit les fonctionnalités proposées par le PHP5 c'est quand meme pas mal... le gros problème du php c'est que on travaille page par page. Lors du chargement de la page on doit tout reprendre à 0 (ou presque)... ce qui n'est pas le cas avec d'autres langages ...
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut