请帮帮我。
我最近一直在使用Codeigniter表单验证而不使用AJAX并且工作正常,我只需要为每个字段添加$form_error
,并将所有内容添加到那里。所以,我在javascript方面并不擅长并且真的很混淆如何显示每个输入字段的错误响应,因为当我使用AJAX时,我唯一的想法就是将响应放在像$(#error-info)
这样的选择器中
到目前为止,这是我的工作
在我的控制器中
$this->_rules();
if($this->form_validation->run() == FALSE)
$msg = array(
'name' => form_error('name'),
'phone' => form_error('phone'),
'email' => form_error('email')
);
echo json_encode($msg);
和我的ajax:
<script type="text/javascript">
$(document).ready(function() {
$('#frm').submit(function(){
$.post($('#frm').attr('action'), $('#frm').serialize(), function( data ) {
console.log(data);
}, 'json');
return false;
});
});
</script>
响应看起来像这样
{"name":"<small class=\"text-danger\">The name field is required.<\/small>","phone":"<small class=\"text-danger\">The phone field is required.<\/small>","email":"<small class=\"text-danger\">The email field is required.<\/small>"}
请给我一个提示。有什么方法可以做到这一点?
答案 0 :(得分:0)
这样的事情应该有效(未经过测试):
PHP
$msg = array(
'name' => form_error('name'),
'phone' => form_error('phone'),
'email' => form_error('email')
);
echo json_encode(array('status' => 'error', 'response' => $msg));
AJAX
我们假设$msg
数组的索引与实际ID匹配,例如id='email'
所以我们可以在字段之后传播错误消息。
$(document).ready(function () {
$('#frm').submit(function () {
$.post($('#frm').attr('action'), $('#frm').serialize(), function (res) {
var data = JSON.parse(res);
if (data.status == 'error') {
$.each(data.response, function(item_id, item_error_msg) {
$('#'+item_id).after().html(item_error_msg);
});
} else {
alert(data.response);
}
}, 'json');
return false;
});
});