Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu] ajax + formulaire

Posted by axolotus on 01/08/2012 21:14

Bonjour,

J'ai créé un formulaire en xml. puis je les afficher grâce à des fonction ajax.

Je veux récupérer sa réponse en ajax :

J'ai donc créé une fonction dans le controleur :

function sauver() {
         $form = jForms::fill("celadmin~user_admin");
         $login = $form->getData('login');
         $password=$form->getData('password');      
        // récupération d'un objet
        $newUser = jAuth::createUserObject ($login, $password);
 
        // ajout d'information si nécessaire, dépendant de l'application
        $newUser->email = 'ducon@aol.com';
 
        // création de l'utilisateur par le driver
        $ok = jAuth::saveNewUser($newUser);
        
        jForms::destroy("celadmin~user_admin");//détruire le formulaire
        
        //envoyer la réponse
         $rep = $this->getResponse('htmlfragment');
         
         $useradminsrv = jClasses::getService("celadmin~useradmin");
         
         $rep->addContent( $useradminsrv->getListUserAdmin() );
        
          return $rep;
    }

dans un js j'ai la fonction suivante :

$(function(){	   
     
     $("form").submit( function(e){
 
    // var sonurl=$(this).action;
     alert("ça passe"); 
     e.preventDefault(); // on empeche l'envoi du formulaire par le navigateur
     var datas = $(this).serialize();          
     /*
     $.ajax({
          type: 'POST',      // envoi des données en POST
          url: sonurl,    
          data: datas,     // sélection des champs à envoyer
          success: function(retour) {  
		  //$("#divadmin").html(retour);
               alert(retour);
          }
     }); */
     }); 
}); 

l'utilisateur est bien enregistré mais dans le navigateur il ne me renvoi que le code source de ma table :.

il n'y a aucun alerte. ma fonction ajax ne passe pas.

j'ai intégré le js pour le formulaire à la main comme conseillé

global $gJConfig;
          $www = $gJConfig->urlengine['jelixWWWPath'];
          $rep->addJSLink($www.'/js/jforms_jquery.js');

quand je lance la page contenant les fonction ajax. les champs sont contrôlés comme il faut.

Le seul problème est que ma fonction ajax ne semble pas fonctionner.

Ma question est dans la suivante : Comment récupérer le submit d'un formulaire dans jelix 1.3

Toutes les idées sont les bienvenues... je rame depuis une semaine...

  [Opened] ajax + formulaire

Reply #1 Posted by foxmask on 01/08/2012 23:34

Bonsoir,

je vois plusieurs problèmes.

  1. apres un $form = jForms::fill() devrait suivre un $form->check() sinon on va dans le mur niveau sécu
  1. si vous utiliser bel et bien jForms (dans le controleur et le template) ceci ne sert à rien
global $gJConfig;
          $www = $gJConfig->urlengine['jelixWWWPath'];
          $rep->addJSLink($www.'/js/jforms_jquery.js');

car dès lors que vous faites dans le template un

{form ... }

jform_jquery.sql est inclus de facto. à moins que le contenu retourné soit autre chose que du html ?

  1. je n'ai pas compris ceci

l'utilisateur est bien enregistré mais dans le navigateur il ne me renvoi que le code source de ma table :.

quelle table ? quel code source ?

il n'y a aucun alerte. ma fonction ajax ne passe pas.

de ce qu'on a là, le js $.ajax est en commentaire donc ça me parait normal que rien ne se passe ...

  1.  pour ajouter une action jelix via jurl dans un bout de js par exemple on fait {litera}{jurl 'module~controleur:action'}{/literal}

@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] Re: ajax + formulaire

Reply #2 Posted by axolotus on 01/11/2012 16:26

Merci foxmask pour ta réponse

en ce qui concerne check je n'avais pas compris son importance ce que je vais réctifier.

Pour le reste, je me suis mal exprimé :

j'ai un formulaire et je souhaite le traiter en ajax. Comment puis-faire?

ma fonction en ajax est la suivante :

$(function(){	   
     
     $("#jforms_celadmin_user_admin").submit( function(e){
     
     e.preventDefault(); // on empeche l'envoi du formulaire par le navigateur
     var datas = $(this).serialize();          
     
     $.ajax({
          type: 'POST',      // envoi des données en POST
          url: sonurl,    
          data: datas,     // sélection des champs à envoyer
          success: function(retour) {  
		  //$("#divadmin").html(retour);
               alert(retour);
          }
     });
     });
}); 

mais cette fonction ne semble pas fonctionner...

comment traiter un formulaire en ajax

merci pour votre aide

  [Opened] Re: ajax + formulaire

Reply #3 Posted by foxmask on 01/11/2012 16:50

Dans ton controleur tu fais une methode dédiée qui traitera celle ci... exemple "save" sera la méthode appelée (au submit du form) si le js est desactivé et "saveajx" celle qui traitera la requete soumis via $.ajax() . Les 2 methodes auront en commun l'enregistrement des données et leur vérif (du coup on peut faire une méthode privée appelée par les 2 ;). Différera juste la "réponse" (html pour le premier htmlfragment pour la second)


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] ajax + formulaire

Reply #4 Posted by axolotus on 01/11/2012 17:08

pas mal le coup des deux fonctions cela permet effectivement de prévoir le cas ou pas de js.

Cependant mon problème est de pouvoir lancer ma fonction javascript quand on fait un submit. La fonction js que j'ai écrite ne récupére pas l'événement. du coup le submit du formulaire m'envoie sur la fonction php pas sur la fonction javacript.... voici ma fonction

$(function(){	   
     
     $("#jforms_celadmin_user_admin").submit( function(e){
     
     e.preventDefault(); // on empeche l'envoi du formulaire par le navigateur
     var datas = $(this).serialize();          
     
     $.ajax({
          type: 'POST',      // envoi des données en POST
          url: sonurl,    
          data: datas,     // sélection des champs à envoyer
          success: function(retour) {  
		  //$("#divadmin").html(retour);
               alert(retour);
          }
     });
     });
}); 

comment fais-tu pour lancer la fonction javascript lors du submit du formulaire? où est l'erreur??? Je commence à devenir un peu cinglé avec ce truc : -

  [Opened] ajax + formulaire

Reply #5 Posted by foxmask on 01/11/2012 22:26

Je pencherai pour 2 cas :

  • l'id du forms est faux, donc le submit n'a jamais lieu
  • la valeur de sonurl est fausse, le submit a lieu mais pas la requete ajax

voici un exemple de ce que j'ai fait, quasi pareil

ma variable sonurl est urlSaveAjax ici https://github.com/huanui/huanui/blob/master/huanui/modules/huanui/templates/zone.my_histo.tpl et le JS qui traite mon formulaire


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] ajax + formulaire

Reply #6 Posted by laurentj on 01/12/2012 10:32

Bonjour,

si tu veux ajouter du code sur le submit, il faut que tu utilises addSubmitHandler

  [Opened] ajax + formulaire

Reply #7 Posted by axolotus on 01/14/2012 20:43

Merci à vous deux,

j'ai réglé les problèmes. Je sais pas trop pourquoi mais un $("#nom") ne fonctionne pas... d'autre part mon formulaire est chargé par une fonction ajax or le javascript lui était chargé lors du chargement de la page. le formulaire n'existait donc pas encore...

j'ai passé un temps fou mais ça marche à présent. Vos conseils mon était d'un grand service.

 
Page
  1. Re: ajax + formulaire