jQuery验证 - 使用$ .ajax请求实现自定义验证器时遇到困难

时间:2016-08-10 17:33:55

标签: jquery ajax validation

我正在尝试添加一个从服务器获取某些信息的自定义验证程序。我知道remote验证方法,我不想使用它,因为我试图将这个逻辑包装在自己的验证器中...因为我需要在几个中重复它地方,并希望remote腾出其他东西。

虽然我的async性质非常困难。现在async暂时关闭$.ajax上的jQuery 3.0,我似乎无法找到任何其他方法让它在结果返回之前暂停完成。

(function () {
    $.validator.addMethod("customRemote", function (value, element, param) {
        $.ajax({
            url: `/api/url`,
            dataType: 'json',
            type: 'POST',
            data: {id: param, value: value}
        }).done(function (response) {
            console.log('always executes later ...');
            return response;
        });
        console.log('always executes first ...');
    }, "Error message ...");
})();

我的服务器上的方法被命中并执行它应该执行的所有操作,并返回正确的结果。但验证者在此之前得到了回应。我似乎无法让它发挥作用。

我应该添加,我发送XHR并将credentials选项设置为true,因为只有经过身份验证的用户才能访问服务器。

1 个答案:

答案 0 :(得分:0)

您可以使用remote method source code 作为基础,并实现您的customRemote。

请注意返回“pending”,这是用于异步验证内部控制的一些关键字。

remote: function( value, element, param, method ) {
  ...//other code
return "pending";
}