jQuery UI对话框中的按钮发送两次ajax请求

时间:2015-06-30 06:31:43

标签: jquery ajax jquery-ui jquery-ui-dialog

这是一次又一次出现的问题之一,所以我知道(我认为)最常见的陷阱。

情景:

  • 对话框在按钮上单击
  • 加载动态内容
  • 事件绑定到发送ajax请求的对话框按钮之一
  • 一旦在蓝色的月亮中,ajax请求被发送两次

以下是呈现对话框的相关代码:

dev_mode_on.js

正如您所看到的,对话框已初始化,但在单击$('#dialog-button'). on('click', function() { $('#dialog').load('dialog.php', function() { $('#dialog').dialog('open'); }); }); $('#dialog').dialog({ autoOpen: false, modal: true, closeOnEscape: false, buttons: [{ "text": "Save", "class": "save", "value": "2", },{ "text": "Cancel", "icons": { primary: "ui-icon-cancel" }, "click": function() { $( this ).dialog( "close" ); } }], close : function() { $('.ui-dialog-buttonset .save').unbind(); } }); 之前不会自动打开,此时内容通过jQuery #dialog-button被拉入对话框,并在通过回调时打开html完成加载。

在对话框中,使用load()将点击事件绑定到.save按钮,理论上不应允许触发点击事件。在单击按钮的禁用属性为“true”并在对话框关闭后调用jQuery one()时,我又采取了一个步骤。

以下是加载到对话框中的代码,并将ajax调用绑定到按钮:

unbind()

当ajax完成时,窗口重新加载或发生错误。没有错误。

到目前为止,我唯一的工作理论是,不知何故整个对话框被创建了两次但是我迄今为止无法实现这一点。除此之外我完全不知所措。我自己无法重现这个问题,而且似乎每个月左右在每天使用的Web应用程序中大约发生一次。这显然使调试变得更加困难。

0 个答案:

没有答案