2011-03-25 4 views
0

J'utilise un contrôleur avec deux actions. L'un est juste un détenteur pour afficher une vue et l'autre est une action à faire en événement. Donc, mon contrôleur aime comme ceci:Jquery formulaire soumettre ne pas frapper action correcte

public function showAViewAction(){ 
    //empty 
} 

public function addUserAction(){ 
     //Code to create a user 
} 

Voici le code du formulaire:

<p> 
    <?php if(!empty($this->errorMessage)) : ?> 
     <img src="/images/view/exclamation.png" alt="error" style="vertical-align:middle;"/> 
     <span style="color:#f00;"><?php echo $this->errorMessage; ?></span> 
    <?php endif; ?> 
    </p> 
<br /> 
<form id="addUserForm" method="post" enctype="multipart/form-data"> 
    <p>This section is a disclaimer for requesting obscure data......</p> 
    <br /> 
    <p><strong>username:</strong></p> 
    <input type ="text" name ="username" id="username"/> 
    <input type ="text" name ="password" id="password" /> 
    <input type="submit" name="addUserBtn" id="addUserBtn" value="Add User" /> 
</form> 

maintenant dans la vue affichée i ont créé une forme. J'utilise jquery pour envoyer la requête de formulaire à l'action addUser dans mon contrôleur. Il ressemble à ceci:

<script type="text/javascript"> 
$(document).ready(function() { 
    newRequestValidator = $('#addUserForm').validate({ 
     rules: { 
      username: 'required', 
      password: 'required' 
     }, 
    submitHandler: 
     function(form) { 

      var options = { 
       url: 'add-user', 
       dataType: 'json', 
       success: showUser 
      }; 
      $(form).ajaxSubmit(options); 
     } 
    }); 
}); 
function showUser(data) { 

    window.location = '/user/'; 

} 
</script> 

Le problème est que lorsque je clique sur le bouton Envoyer sur mon formulaire, il frappe l'action SHOWVIEW au lieu de l'action addUser. Qu'est-ce que je fais mal?

+0

Etes-vous sûr que 'showUser' tire sur le clic? –

+0

AddUser du côté du contrôleur n'est jamais déclenché lors d'un clic. J'ai un enregistreur et il n'est jamais touché. – Matt

+0

Si vous mettez une alerte ('Salut à tous)' dans la fonction JS 'showUser', obtenez-vous cela lorsque vous cliquez sur le bouton? –

Répondre

1

Essayez de changer l'option "url" de "add-user" à "/ user/add-user". Si vous inspectez la requête dans firebug ou dans l'inspecteur intégré de chrome, vous devriez voir que la requête est mal formée.

+0

+1 bien call Lance –

2

Vos actions ne portent pas correctement le nom?

public function showAView(){ 
    //empty 
} 

public function addUser(){ 
     //Code to create a user 
} 

Devrait être

public function showAViewAction(){ 
    //empty 
} 

public function addUserAction(){ 
     //Code to create a user 
} 

EDIT

Dans ce cas, votre accès à leur façon incorrecte, vous devez utiliser add-user pas addUser

+0

Désolé, c'était juste une faute de frappe de ma part – Matt

+0

Voir mes modifications sur l'accès aux actions ... –

+0

Fait les changements, mais toujours aucun résultat. Lorsque je clique sur le bouton de formulaire, le showAViewAction est appelé et non l'addUserAction – Matt

0

Est-ajoutez-vous la validation plug- dans votre code source?

<script src="jquery.validate.min.js" type="text/javascript" ></script> 

Vous pouvez télécharger ce d'ici http://plugins.jquery.com/project/validate

Questions connexes