php - 将验证从 Controller 传递回 ajax 函数

标签 php javascript ajax codeigniter jquery

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

登录 View

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

登录 Controller

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

}

最佳答案

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

您需要有一个地方可以放置验证错误:

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

关于php - 将验证从 Controller 传递回 ajax 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5118264/

相关文章:

javascript - 如何在mean js中安装angular-xeditable

php - 如何通过单击按钮显示 div 的值?

javascript - 通过表单提交图像和文本以及进度条

php - 我的 PHP 换行初学者代码不会换行。帮助不大?

php - Laravel,在 Eloquent 语法中应用 where 之后 with

javascript - 从 "export default"导入特定对象会导致 "undefined"

javascript - Google map 上未显示带有信息窗口的多个标记

asp.net - 不使用ASP.net ajax工具包可以做ajax吗?

在 WHERE 子句中使用变量时 PHP MySQL 结果问题

php - Barclays ePDQ 和 PHP - 拒绝付款?