【发布时间】:2014-07-23 00:33:38
【问题描述】:
所以我有这个问题。我正在做服务器端验证和 jquery 验证。
在服务器端验证中,我所做的是使用 codeigniter 的 form_validation 库,更具体地说:
$this->form_validation->set_rules('documentn', 'Passport number', 'required|min_length[7]|max_length[20]|is_natural|callback_checkDocAndUser');
需要返回真或返回假。
我有这个用户编辑表单,用于更改用户数据。但是有一些限制......存储在数据库中的用户具有唯一的护照号码。如果这个护照号码有误,我需要能够更改它...但是护照号码不应该在数据库中重复。
这是从 callback_checkDocAndUser 调用的 php 函数:
public function checkDocAndUser(){
if ((isset($_POST['documentn'])) && (isset($_POST['id']))) {
$dn = UserManager::getInstance()->checkUserDocument($_POST['documentn'],$_POST['id']);
if ($dn) {
//passport belongs to the user
echo "true";
// return true;
}else{
//does the passport entered belong to another user?
$exists = UserManager::getInstance()->getByDocument($_POST['documentn']);
if (!$exists) {
//passport belongs to another user
echo "true";
// return true;
}else{
//passport number is free to use
echo "false";
// return false;
}
}
}
}
如您所见,我在函数中添加了一些“回声”。这是因为我想使用相同的函数进行 jQuery 验证(需要回显,不能使用“return”)。
documentn: {
required: true,
minlength: 7,
maxlength: 20,
remote: {
url: '/admin/checkDocAndUser',
type: 'POST',
data: {
id: function(){
return $('#id').val();
}
}
}
},
那么我怎样才能对这两种验证使用相同的功能...?有没有办法让jquery函数接收return..或codeigniter的函数接收echo?
【问题讨论】:
-
呃,你想做什么?
id是函数还是$('#id').val()的值?我猜是最后一个那么为什么不只是id: $('#id').val()呢? -
我稍后会检查这是否有效,但现在我对我的帖子的真正问题更感兴趣。但是感谢您的观察;)
-
不清楚您要做什么。
documentn是什么?它是某个更大对象的成员。那个对象是什么以及它是如何被使用的?你在用$.ajax()吗?或者$.post()?还是别的什么? -
documentn 是护照号码(或用户 ID)...我正在使用远程规则 ..这是通过 ajax 检查数据库中是否存在特定数据的自定义规则。请注意,我提到函数工作正常并给出预期结果,但前提是我对 js 文件使用 echo 并返回 codeigniter 的回调函数
-
我的意思是
documentn只是一个更大的声明中的一个sn-p。向我们展示整个声明。
标签: php jquery validation jquery-validate codeigniter-2