【发布时间】:2011-02-25 14:16:44
【问题描述】:
我正在使用 jQuery 创建一个使用 codeigniter 和 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>
登录控制器
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.
}
}
【问题讨论】:
-
你为什么要通过ajax做登录功能?这不是一个常见的情况。 ajax 函数无法处理您的重定向 - 请记住,这是您的浏览器的单独请求,因此重定向将不可见。我可以假设使用返回的任何响应来决定操作 - 显示内容或重定向等 - 但同样,重点是什么?
-
我想我决定使用 ajax 是因为我有一个显示登录表单的 fancybox modal。我希望它在登录过程发生时有一个加载微调器。
-
通过 AJAX 进行登录在本质上并没有降低安全性(只是指出)。
标签: php javascript ajax codeigniter jquery