考虑以下场景:我有一个可以打开对话框(jquery 对话框)的页面。此对话框允许用户更新一些值,甚至插入新值。用户有时会多次点击“确认”按钮,触发更新或插入的次数与点击次数一样多。该方法通过 ajax 调用 (jquery ajax) 触发,成功时会向用户显示一个不错的“完成”消息。
在更新场景中,这很好,即使我的服务器代码必须在数据库上调用更新命令的次数与调用该方法的次数一样多。但是在插入情况下,我的数据被提交了几次,并且在数据库中插入了几行。这会给其他领域带来很多问题。
我读到了 post-redirect-get 模式,这将是我问题的理想解决方案。但它只说一个非 ajax 帖子。如果通过 ajax 调用完成对方法的调用呢?如何防止用户多次提交同一件事?
我试图阻止对话框上的按钮,即使它有效,我认为这是不好的解决方案,因为按钮可能不会一直被阻止,特别是如果用户的浏览器有问题。