欧芹远程验证

问题描述 投票:1回答:2

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

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

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

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

任何人都可以给我一个正确的方向吗?

javascript php validation parsley.js
2个回答
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 ['remote-email'] = function(xhr){return xhr.status === 404; };

并使用data-parsley-remote-validator="remote-email"

所有这些都在文档中解释了here

希望有所帮助。

最好


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");
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.