自定义 Parsley.js 异步验证器循环两次
Custom Parsley.js asynchronous validator loops twice
我整个下午都在想这个问题,但我似乎无法调试它。问题是,当我对页面进行硬刷新(文档就绪触发)时,我的自定义异步验证程序运行两次,但只有 posts 一次到服务器。
window.Parsley.addAsyncValidator('emailvalidation', function (data) {
console.log("Runs");
var myResponseText = data.responseText;
var obj = jQuery.parseJSON(myResponseText);
valid = (obj.result == 1);
return valid;
}, '/check.do?action=userEmailAvailable&ajax=1');
基本上它会在控制台中打印 Runs
两次,但不会重复服务器 post。每次循环它还会打印一条错误消息(重复)。如果我从 link 进入页面(使用 smoothState 和 ajax dom 插入因此文档就绪不会触发,则不会发生这种情况)。提交表单位于页面底部,未包装到文档就绪中,验证器也不是在单独的 .js 文件中(也未包装在文档就绪中)。这个问题只发生在这个自定义验证器上(它也是唯一一个 ajax 验证器)。
此致
现在没有时间检查源代码,但完全有可能每个请求验证器 运行 不止一次。特别是 ajax 请求被缓存....
虽然这应该不是问题,您的代码只是从 ajax 响应到最终结果(是否有效)的翻译,运行多次使用它应该没有任何影响。
我整个下午都在想这个问题,但我似乎无法调试它。问题是,当我对页面进行硬刷新(文档就绪触发)时,我的自定义异步验证程序运行两次,但只有 posts 一次到服务器。
window.Parsley.addAsyncValidator('emailvalidation', function (data) {
console.log("Runs");
var myResponseText = data.responseText;
var obj = jQuery.parseJSON(myResponseText);
valid = (obj.result == 1);
return valid;
}, '/check.do?action=userEmailAvailable&ajax=1');
基本上它会在控制台中打印 Runs
两次,但不会重复服务器 post。每次循环它还会打印一条错误消息(重复)。如果我从 link 进入页面(使用 smoothState 和 ajax dom 插入因此文档就绪不会触发,则不会发生这种情况)。提交表单位于页面底部,未包装到文档就绪中,验证器也不是在单独的 .js 文件中(也未包装在文档就绪中)。这个问题只发生在这个自定义验证器上(它也是唯一一个 ajax 验证器)。
此致
现在没有时间检查源代码,但完全有可能每个请求验证器 运行 不止一次。特别是 ajax 请求被缓存....
虽然这应该不是问题,您的代码只是从 ajax 响应到最终结果(是否有效)的翻译,运行多次使用它应该没有任何影响。