我有以下用户名的输入字段:
<input type="email" class="form-control" id="txt_username" name="username" data-parsley-trigger="change" data-parsley-remote="/User/user_exists" data-parsley-remote-options='{ "type": "POST", "dataType": "json", "data": { "request": "ajax" } }'>
这工作正常,并调用我的PhP function
:
public function user_exists()
{
if($this->isAjax())
{
$user = $this->getDatabase()->prepTemplate('SELECT * FROM User WHERE username = ? ', 's', array($_POST['username']), MySqlTemplates::RFQ_FM);
if($user != null)
{
print json_encode("400");
}
else
{
print json_encode("200");
}
}
}
但是,我不确定如何拒绝或允许验证。
文档没有多大帮助(至少我找不到它)
任何人都可以给我一个正确的方向吗?
默认情况下,parsley.remote会将所有2xx ajax响应视为有效响应,并将所有其他响应视为错误响应。
我们在我们的应用程序中也有同样的担忧,利用Parsley告诉用户他们想要的用户名/电子邮件是否在我们的数据库中可用。为此,请保留正确的REST API响应(如果找到用户则为200,否则为404),您需要通过以下方式告诉parsley.remote执行与此行为相反的操作:
data-parsley-remote-reverse="true"
data-parsley-remote-validator="reverse"
告诉使用反向验证器(与上面完全相同)并使用data-parsley-remote-validator="remote-email"
所有这些都在文档中解释了here。
希望有所帮助。
最好
在你的php文件中:
public function user_exists()
{
if($this->isAjax())
{
$user = $this->getDatabase()->prepTemplate('SELECT * FROM User WHERE username = ? ', 's',array($_POST['username']), MySqlTemplates::RFQ_FM);
if($user != null)
{
header("HTTP/1.0 404 Not Found");
}
else
{
header("HTTP/1.1 200 Ok");
}
}
}