【问题标题】:Custom Parsley.js asynchronous validator loops twice自定义 Parsley.js 异步验证器循环两次
【发布时间】:2025-12-07 02:10:02
【问题描述】:

我整个下午都在想这个问题,但我似乎无法调试它。问题是,当我对页面进行硬刷新(文档就绪触发)时,我的自定义异步验证器运行了两次,但只向服务器发布了一次。

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,但不会重复服务器发布。每次循环时,它还会再打印一条错误消息(重复)。如果我从链接访问页面,则不会发生这种情况(使用 smoothState 和 ajax dom 插入,因此不会触发文档就绪)。提交表单位于页面底部,未包装到准备好的文档中,位于单独的 .js 文件中的验证器也未准备好(也未包装在准备好的文档中)。这个问题只发生在这个自定义验证器上(它也是唯一一个 ajax 验证器)。

最好的问候

【问题讨论】:

    标签: javascript jquery ajax parsley.js


    【解决方案1】:

    现在没有时间检查源代码,但验证器完全有可能在每个请求中运行不止一次。特别是ajax请求会被缓存....

    这应该不是问题,您的代码只是从 ajax 响应到最终结果的转换(是否有效),多次运行应该不会有任何影响。

    【讨论】:

      最近更新 更多