Форма запроса JQuery отправлена ​​без соответствующих действий - PullRequest
0 голосов
/ 25 марта 2011

Я использую контроллер с двумя действиями. Один - это просто держатель для отображения вида, а другой - действие для выполнения события. Так что мой контроллер любит так:

public function showAViewAction(){
    //empty
}

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

Вот код формы:

<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>

Теперь в отображаемом виде я создал форму. Я использую jquery для отправки запроса формы в действие addUser в моем контроллере. Это выглядит так:

<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>

Проблема в том, что когда я нажимаю кнопку «Отправить» в моей форме, она выполняет действие showView вместо действия addUser. Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

Ваши действия не имеют правильного названия?

public function showAView(){
    //empty
}

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

Должно быть

public function showAViewAction(){
    //empty
}

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

EDIT

В этом случае вы обращаетесь к ним неправильно, вам нужно использовать add-user, а не addUser

1 голос
/ 25 марта 2011

Попробуйте изменить параметр «url» с «add-user» на «/ user / add-user».Если вы проверяете запрос в Firebug или Chrome встроенный инспектор, то вы должны увидеть, что запрос искажен.

0 голосов
/ 25 марта 2011

Вы добавляете плагин проверки в свой исходный код?

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

Вы можете скачать его здесь http://plugins.jquery.com/project/validate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...