我正在尝试弄清楚如何使用this作为返回的JSON数据运行if语句。当出现错误时,我希望它找出具有错误的用户名或密码输入,并附加一个带有错误类别的标签实际错误。所以下面的if语句需要找出它的数据错误是否是用户名,然后放入错误而不是错误。
{"output_status":"Error","output_title":"Form Not Validated","output_message":"The form did not validate successfully!","error_messages":{"username":"This is not have an accepted value!"}}
if (data.output_status == 'Error')
{
if (data.?)
{
$('#username').after('<label class="error">error</label>');
}
}
编辑:
我不确定发生了什么,但现在我收到通知表单因某些原因没有提交。
$('#login_form :input:visible').each(function() {
var name = $(this).attr('name');
if (data.error_messages.name)
{
$(this).after('<label class="error">' + data.error_messages.name + '</label>');
}
});
public function submit()
{
$output_status = 'Notice';
$output_title = 'Not Processed';
$output_message = 'The request was unprocessed!';
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_check_username');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
$this->form_validation->set_rules('remember', 'Remember Me', 'trim|xss_clean|integer');
if ($this->form_validation->run() == TRUE)
{
}
else
{
$output_status = 'Error';
$output_title = 'Form Not Validated';
$output_message = 'The form did not validate successfully!';
}
echo json_encode(array('output_status' => $output_status, 'output_title' => $output_title, 'output_message' => $output_message, 'error_messages' => $this->form_validation->error_array()));
}
public function check_username($str)
{
if (preg_match('#[a-z0-9]#', $str))
{
return TRUE;
}
$this->form_validation->set_message('check_username', 'This is not have an accepted value!');
return FALSE;
}
答案 0 :(得分:3)
尝试:
if (data.error_messages['username'])
{
$('#username').after('<label class="error">' + data.error_messages['username'] + '</label>');
}
现在作为奖励,您可以迭代所有输入字段并执行相同的操作:
$('#form-id :input:visible').each(function() {
var id = $(this).attr('id');
if (data.error_messages[id])
{
$(this).after('<label class="error">' + data.error_messages[id] + '</label>');
}
});
答案 1 :(得分:1)
您可以通过对象键访问错误消息 - 在本例中为“username”:
if(data.error_messages["username"]) // this return undefined if it doesn't exist
{
// code
}
答案 2 :(得分:1)
if (data.output_status == 'Error')
{
if (data.error_messages.username)
{
$('#username').after('<label class="error">' + data.error_messages.username + '</label>');
}
}
如果没有用户名错误,data.error_messages.username
将只返回undefined。