欧芹远程验证

时间:2014-06-17 12:06:46

标签: javascript php validation parsley.js

我有以下用户名的输入字段:

<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");
        }
    }
}

但我不确定如何拒绝或允许验证。

文档没有多大帮助(至少我找不到它)

任何人都可以向我推进正确的方向吗?

2 个答案:

答案 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");
        }
    }
}