- 1
[Opened] [RESOLU] Ajax + jQuery + redirection
Posted by hello66 on 04/10/2013 21:51
Bonjour,
Je suis en train de développer un site internet entièrement à partie de Jelix ; j'ai quelques bases concernant le framework, mais sinon j'apprends au fur et à mesure. J'ai utilisé jZone pour gérer chaque zone de mon site. Les utilisateurs du site peuvent s'identifer et en fonction de leur profil, la zone principale est recharchée.
ma dao utilisateur (profil à 0 si administrateur, 1 si organisateur et 2 si participant) :
<dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="utilisateur" realname="utilisateur" primarykey="mail" /> </datasources> <record> <property name="mail" fieldname="mail" datatype="varchar" required="true" maxlength="50"/> <property name="password" fieldname="password" datatype="varchar" required="true" maxlength="10"/> </record>
ma fonction connection dans mon controller
function connexion () { if (jApp::coord()->request->isAjax()){ $utilisateurFactory = jDao::get("utilisateur"); $conditions= jDao::createConditions(); $conditions->addCondition('mail','=',$this->param('login')); $conditions->addCondition('password','=',$this->param('password')); $utilisateurList = $utilisateurFactory->findBy($conditions); $utilisateurs = $utilisateurList->FetchAll(); jSession::start(); $profil = $utilisateurFactory->profil; if ($profil =='0'){$url= jurl :: get('site_internet~index@classic', array('page'=>'profiladmnistrateur'));} else if ($profil =='1'){$url= jurl :: get('site_internet~index@classic', array('page'=>'profilorganisateur'));} else if ($profil =='2') {$url= jurl :: get('site_internet~index@classic', array('page'=>'profilparticipant'));}; header("location: $url"); if (sizeof ($utilisateurs)==1){ $rep=$this->getResponse('json'); return $rep; } else {return null;}} }
mon js
$(document).ready(function () { $("#connexionForm").submit( function() { var $jUrlAjaxConnexion =$("#jUrlAjaxConnexion").val(); var $login=$("#login").val(); var $password=$("#password").val(); var $ajaxRequest= $.ajax({ type:"POST", url: $jUrlAjaxConnexion, data: "login="+$login+"&password="+$password}); $ajaxRequest.done(function() { $("#titleForm").text("Bienvenue à toi valeureux Raideur !"); $("#titleForm").css("color","green"); $("#connexionForm").css("display","none"); }); $ajaxRequest.fail(function() { $("#titleForm").css("color","red"); $("#titleForm").text("Le couple identifiant/mot de passe est incorrect !"); }); return false; }); });
Ce que j'ai fait permet à tous les types d'utilisateurs de se connecter, mais ma zone principale n'est pas rechargée... Si vous avez des idées, je suis preneuse.
Merci d'avance de votre aide.
[Opened] Ajax + jQuery + redirection
Posted by foxmask on 04/10/2013 21:59
Bonsoir,
y a-t-il une raison pour ne pas utiliser ce que le framework propose en terme d'identification utilisateur d'une part, et en terme ajax d'autre part ?
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Ajax + jQuery + redirection
Posted by hello66 on 04/10/2013 22:03
Quand j'ai commencé à utiliser jelix au début de mon projet, je ne connaissais pas le plugin jAuth ; en cours de développement web, nous avons travaillé l'identification via ajax +jquery , j'ai donc choisi la facilité... le truc c'est que maintenant je suis bloquée... et changer pour utiliser jAuth me demanderai beaucoup de travail... or je n'ai pas assez de temps. Donc si je n'ai vraiment pas le choix je le ferai, mais je préfererai éviter.
[Opened] Ajax + jQuery + redirection
Posted by EricD on 04/10/2013 23:40
Salut, j'avais commencer à répondre en mode pas à pas (comme pour le dernier post), mais en relisant le début il est à mon avis préférable que tu regarde du coté de jCommunity ou de la solution proposé dans la documentation (master_admin).
Si j’était toi, JCommunity permet de faire tous un tas de choses qui te prendront du temps. Comme par exemple un système de changement de password en cas d'oubli ;) Il te permet d'avoir une gestion des droits très agréable.
Pour finir, Dans ton script js : var $jUrlAjaxConnexion =$("#jUrlAjaxConnexion").val(); // du doit surement avoir mieux pour faire passer l’adresse de ta requet ajax.
Tu vérifie seulement si ta requette ajax a retourné une réponse de type 200.
Dans ton controller :
le return false vas lever une erreur au niveau du framework qui ne comprendra pas ce qu'il doit renvoyer.Le plus simple serait peut être de
function connexion () { $rep=$this->getResponse('json'); //tu définit le type de réponse que tu vas renvoyer que ta réponse soit de type positive ou négative $rep->data = array('success'=>false); // réponse par default //si la req est bonne $rep->data['success'] = true; //Si pas bonne tu peux ajouter un message .... //a la fin tu retourne ta reponse return $rep; }
Les cours donnés à l'école sont minimaliste (je peux te le dire), tu devrait peut être faire un tour sur le sdz pour comprendre ce qu'est le js. Apres comprendre ce qu'est la library Jquery.
Bonne soirée
- 1