一、重复提交
做项目时,用ajax提交,有的时候会遇到重复提交问题,之前以为是按钮的快速点击问题,因此用了以下手法来解决:
$(this).attr("disabled", true);
$(this).attr("disabled", false);
分别放在click事件的开始和结束.
但是发现即使如此还是会出现重复提交现象,有的时候不知道改了哪莫名其妙解决了。这次又遇到了这个问题,并且是delete事件,并且出现了点击一次提交一次,点击两次提交两次,点击三次提交三次的现象。
如果搜索重复提交一般会提示将按钮无效化。
但是无效化之后还是重复提交,这是重复绑定问题。
搜索重复绑定,查询出现以下解决方案:
$("#DeleteTypeOK").die().live("click", function () {};
先解除再绑定的方式,保证只绑定一次。
二、点击没反应
点击没反应本质是因为函数没绑定成功。本次应用时是在asp.net mvc3.0中,利用partial view更新结果,partial view作为一个单独的document需要独自绑定,如果把click绑定代码放在母页面之中,则只能执行一次,partial view更新之后就不能执行。因此需要把click绑定放在partial view之中,但是由此会导致页面每一次刷新,都会为按钮绑定一次click事件,因此点几次执行几次的事情会发生。
所以解决问题需要把绑定函数放在partial view中,并且按照上述方式先解除再绑定。
PS:
以前还遇到过js代码放在一个partial view中有效,放在另一个就无效的情况,可能就是因为partial view的更新导致没有再次成功绑定。但是母页面永远可以获取子页面的元素,因为是位于一个页面里的,但是dom 的绑定是单独进行的。