自定义Parsley.js异步validation器循环两次
我整个下午一直在想这个,我似乎无法调试这个。 问题是,当我对页面进行硬刷新(文档准备好了)时,我的自定义异步validation器会运行两次但只发布一次到服务器。
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。 每次循环时,它还会打印一条错误消息(重复)。 如果我从链接进入页面(使用smoothState和ajax dom插入,因此文档就绪不会触发),就不会发生这种情况。 提交表单位于页面底部,并未包装到文档就绪中,也不是单独的.js文件中的validation程序(也未包含在文档就绪中)。 此自定义validation程序(也是唯一的ajaxvalidation程序)只会出现此问题。
最好的祝福
现在没时间检查源代码,但完全有可能validation器每次请求都会运行多次。 特别是,ajax请求被缓存….
这应该不是问题,你的代码只是从ajax响应到最终结果的转换(它是否有效),多次运行它不会产生任何影响。