Передача проверки из контроллера обратно в функцию ajax - PullRequest
0 голосов
/ 25 февраля 2011

Я создаю форму входа, используя codeigniter и AJAX, используя jQuery.Мой вопрос заключается в том, как отобразить ошибки проверки, которые возвращаются из codeigniter.Все работает, если пользователь входит в систему должным образом, но я использую инструмент проверки в codeigniter, и я хотел бы отобразить эти ошибки обратно на странице, если не удается войти в систему.Как я могу вернуть ошибки валидации из контроллера в .success вызова функции ajax?Мой код ниже .. Спасибо!

Вид входа

<script type="text/javascript">

    $('#login_form').submit(function(e) {

        var username = $('#username').val();
        var password = $('#password').val();

        var loginData = "&username=" + username + "&password=" + password;

        $.ajax({
             type: "POST",
             url: "<?php echo site_url('login/validate') ?>",
             data: loginData,
             success: function(data) {

                   //My question is how to dislpay data if validation_errors() has something and do nothing if login properly worked.
             }
        });
    });

</scirpt>

<form id="login_form">
  Username: <input type="text" name="username" id="username" size="15" /><br />
  Password: <input type="password" name="passwort" id="password" size="15" /><br />
  <div align="center">
      <p><input type="submit" value="Login" /></p>
  </div>
 </form>

Контроллер входа

function validate() {

    foreach($_POST as $key => $value ) {
         $$key = trime(value);
    }

    $query = ..... call the model to validate in DB this works and will return true or false if it authenticates...

    if( $query ) {
         //redirect to the loggedin view..
         rediect('site/loggedin');
    }
    else {

         //here I want to pass back the validation errors to be shown on the current view. 
    }

}

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

jondavidjohn прямо на точке. Однако, чтобы получить подтверждение, вам нужно вернуть validation_errors () через ajax:

Вам понадобится место, где вы добавите ошибки проверки:

HTML

<div class="errors"></div>

Jquery

$.ajax({
    type: "POST",
    url: "<?php echo site_url('login/validate') ?>",
    data: loginData,
    success: function(data) {
        if (data == undefined) {
            window.location = "<?php echo site_url('controller/loggedin') ?>"; //javascript redirect by jondavidjohn
        }
        else {
            $('.errors').html(data); //how you get and set the errors to the html file
        }            
    }
});

PHP

function login() {
    if ($this->form_validation->run() != TRUE) {
      echo validation_errors(); // this returns the errors via ajax
    }
}
0 голосов
/ 25 февраля 2011

Вам придется обрабатывать перенаправление с помощью javascript, поэтому в обработчике успеха ajax

$.ajax({
    type: "POST",
    url: "<?php echo site_url('login/validate') ?>",
    data: loginData,
    success: function(data) {
        if (data) {    //if the data returned is true (or 1)
            window.location = "<?php echo site_url('controller/loggedin') ?>"; //javascript redirect
        }
        else {         //if the data returned is not true (or 0)
            //show your error here
        }            
    }
});

и в вашем контроллере вы будете просто выводить 1 или 0 в зависимости от успешности входа в систему. и если $query - логическое значение true / false, просто введите его.

function validate() {

    foreach($_POST as $key => $value ) {
         $$key = trime(value);
    }

    $query = ..... call the model to validate in DB this works and will return true or false if it authenticates...

    echo $query;  //should be true/false which will be interpreted by the ajax success callback.

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