我有以下用户名的输入字段:
<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");
}
}
}
但我不确定如何拒绝或允许验证。
文档没有多大帮助(至少我找不到它)
任何人都可以向我推进正确的方向吗?
答案 0 :(得分:4)
默认情况下,parsley.remote会将所有2xx ajax响应视为有效响应,将所有其他响应视为错误响应。
我们的应用程序也有同样的担忧,利用Parsley告诉用户他们想要的用户名/电子邮件是否可以在我们的数据库中找到。为此,请保持正确的REST API响应(如果找到用户则为200,否则为404),您需要通过以下方式告诉parsley.remote 执行相反的:
data-parsley-remote-reverse="true"
data-parsley-remote-validator="reverse"
告诉使用反向验证器(与上面完全相同)最后但并非最不重要的是,为此检查创建您自己的验证器(我们在项目中执行此操作):
window.ParsleyExtend.asyncValidators [&#39; remote-email&#39;] = function(xhr){ return xhr.status === 404; };
并使用data-parsley-remote-validator="remote-email"
文档中解释了所有here。
希望有所帮助。
最佳
答案 1 :(得分:1)
在你的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");
}
}
}