Parsley 远程验证执行多次,即使在成功提交后

Parsley remote validation is performed several times, even after successful submission

我在我的项目中使用 Parsley 进行表单验证。所述表单中的一个字段是一个必须唯一的 ID - 所以我添加了自己的 addAsyncValidator 并且在后端我 return 404 或 200 取决于是否已经存在具有该 ID 的条目。

当按下表单的提交按钮时,我使用

$("#frmobjectadd").submit(function(event){
    $(this).parsley().whenValidate().done(function() {
        //Ajax call to the backend to insert data here...
    }
});

处理异步验证问题。使用此方法的验证有效,但是,我注意到几乎每次我提交表单时,至少会针对该字段单独进行三个 Ajax 调用。此外,当表单有效时,数据将被发送到后端,在那里它被成功处理。在 XHR 日志中,我看到 AJax 响应表明它已成功,在这种情况下,我将用户重定向到另一个页面。尽管如此,Parsley 仍然向远程验证器发送表单验证请求,但该请求失败,因为它正在检查我刚刚插入的条目是否已存在于数据库中。这会导致在重定向发生之前显示短时间的错误消息。有什么办法可以解决这个问题吗?

远程验证者:

Parsley.addAsyncValidator('objectexists', function (xhr) {
     return xhr.status === 200;
}, "/backend/insert.php?formfunction=checkIfUnique&projectid=<?php echo $projectid; ?>");

有问题的字段

<input type="text" required
    data-parsley-remote
    data-parsley-remote-validator="objectexists"
    data-parsley-remote-message="Object name already exists."
    class="form-control" id="id" name="id" value="" placeholder="Type in object name">

表单的 Parsley 初始化如下所示:

    $('#frmobjectadd').parsley({
        errorClass: 'has-error',
        classHandler: function(el) {
          return el.$element.closest(".form-group");
        },
        errorsWrapper: '<span class="help-block"></span>',
        errorTemplate: "<span></span>",
        errorsContainer: function(el) {
            return el.$element.closest('.form-group');
        }
    });   

为什么不让 Parsley 处理 submit 事件,也不需要调用 whenValidate。只需监听 form:successform:submit 事件即可。