Проверка на стороне клиента MVC прервана теперь, когда я делаю ajax - PullRequest
2 голосов
/ 21 декабря 2010

Привет, я использую ajax с jquery для выполнения публикации формы.

Вот мой jquery:

 $("#submit").click(function (e) {
            e.preventDefault();
            $.post("Account/LogOn",
                    $(this.form).serialize(),
                    function (data) {
                        if (data.redirect) {
                            // data.redirect contains the string URL to redirect to
                            window.location.href = data.redirect;
                        }
                        else {
                            // data.form contains the HTML for the replacement form
                            $("#error").replaceWith(data.error);
                        }
                    },
                    'json'
            );
            return false;
        });

Это работает, как и ожидалось, однако встроенной проверки MVC нетдольше работает?(в сообщениях об ошибках не указывается имя пользователя / пароль, требующийся, если они опущены и форма отправлена.).

Любые идеи, почему проверка на стороне клиента больше не работает?

спасибо

1 Ответ

2 голосов
/ 21 декабря 2010

Поскольку проверка на стороне клиента инициируется публикациями формы, и вы больше не публикуете форму, вы выполняете публикацию jQuery, которая по существу обходит триггеры проверки. Вы должны вручную запустить проверку в своем javascript, а затем проверить, обнаружила ли проверка на стороне клиента какие-либо ошибки, и если это не так, вы можете продолжить работу с сообщением ajax.

Редактировать: Вот документация о том, как это сделать. Код будет выглядеть примерно так ...

    $("#submit").click(function (e) {
            e.preventDefault();
            $(this.form).validate();
            if($(this.form).valid())
{
            $.post("Account/LogOn",
                    $(this.form).serialize(),
                    function (data) {
                        if (data.redirect) {
                            // data.redirect contains the string URL to redirect to
                            window.location.href = data.redirect;
                        }
                        else {
                            // data.form contains the HTML for the replacement form
                            $("#error").replaceWith(data.error);
                        }
                    },
                    'json'
            );
            return false;
}
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...