【发布时间】:2014-06-09 21:33:44
【问题描述】:
我正在使用 ajax 在 Yii 中提交登录表单。这是我的ajax函数:
$("#login-form").submit(function() {
var email = $("#email").val();
var password = $("#password").val();
$.ajax({
url: "<?php echo Yii::app()->request->baseUrl; ?>/site/validatelogin",
type: "post",
data: "email=" + email + "&password=" + password,
success: function(response) {
if (response === "1") {
window.location.href = "<?php echo Yii::app()->getBaseUrl(true); ?>/dashboard";
}
else
{
//Dispaly response errors above login form
}
},
error: function() {
alert("Could not perform the requested operation due to some error.");
return false;
}
});
});
我的 PHP 控制器函数是 validatelogin 如下:
$email = $_POST['email'];
$password = $_POST['password'];
$model = new LoginForm();
$model->email = $email;
$model->password = $password;
if ($model->validate() && $model->login()) {
echo "1";
} else {
print_r($model->getErrors());
}
如果用户输入正确的凭据,我会发送 1 作为对视图的响应,并将用户重定向到仪表板。
但是,如果用户输入了错误的凭据,则 ajax 响应中会收到不同的错误,具体取决于错误的类型。
我想通过循环在成功函数的其他部分中显示登录表单上方的这些错误。
但是当我在响应上运行循环时,该数组的长度非常大,例如,如果响应中的错误是“密码错误”,那么响应数组在错误消息中的长度为 18(字符数)。简而言之,响应数组是这样的:
array('I','n','c','o','r','r'....)
而不是
array([0]=>"Incorrect password")
如何转换后一种格式的响应数组并遍历每个索引以在登录表单上方向用户显示错误消息?
【问题讨论】:
-
一个字符串只是一个字符数组。我希望您正在迭代一个字符串。请 console.log(response);并使用结果编辑问题,并在登录表单上方显示 //Dispaly 响应错误的代码
标签: javascript php ajax arrays yii