我正在使用 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/