Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将验证从控制器传递回ajax函数_Php_Javascript_Ajax_Codeigniter_Jquery - Fatal编程技术网

Php 将验证从控制器传递回ajax函数

Php 将验证从控制器传递回ajax函数,php,javascript,ajax,codeigniter,jquery,Php,Javascript,Ajax,Codeigniter,Jquery,我正在使用codeigniter和使用jQuery的AJAX创建一个登录表单。我的问题是如何显示codeigniter返回的验证错误。如果用户正确登录,一切正常,但我使用codeigniter中的验证工具,如果登录失败,我想在页面上显示这些错误。如何将验证错误从控制器传递回ajax函数calll的.success?我的代码在下面。。谢谢 登录视图 <script type="text/javascript"> $('#login_form').submit(function

我正在使用codeigniter和使用jQuery的AJAX创建一个登录表单。我的问题是如何显示codeigniter返回的验证错误。如果用户正确登录,一切正常,但我使用codeigniter中的验证工具,如果登录失败,我想在页面上显示这些错误。如何将验证错误从控制器传递回ajax函数calll的.success?我的代码在下面。。谢谢

登录视图

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

您必须通过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
        }            
    }
});

jondavidjohn说得对。但是,要获得验证,需要通过ajax返回验证错误()

您需要在某个地方输入验证错误:

HTML


为什么要尝试通过ajax实现登录功能?这不是常见的情况。ajax函数无法处理您的重定向-请记住,这是浏览器的单独请求,因此重定向将不可见。我想您可以使用返回的任何响应来决定操作—显示内容或重定向等—但是,这又有什么意义呢?我想我决定使用ajax是因为我有一个fancybox模式来显示登录表单。我希望它在登录过程中有一个加载微调器。通过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
        }            
    }
});
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.

}
<div class="errors"></div>
$.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
        }            
    }
});
function login() {
    if ($this->form_validation->run() != TRUE) {
      echo validation_errors(); // this returns the errors via ajax
    }
}