jqueryui对话框-第二个对话框自动关闭



概述:定义了一个基本的jqueryui对话框,然后根据需要使用注入的标记打开。

问题:第一个例子有效,但第二个(看起来很相似)无效。它们的打开顺序没有区别。即使我先打开不工作的,它也不起作用。如果我做了什么明显迟钝的事情,我会很感激再给我一双眼睛。

注意:这些是来自一个大代码字段的片段,所以请不要检查匹配的括号。除了被星号包围的第二个jqueryui对话框外,所有代码都在工作。Ajax返回正确的数据等。第二个对话框上方的警报甚至可以工作,但该对话框永远不会显示(无论代码中是否有警报)。

第二个对话框调用位于ajax回调函数内部。我是否需要使用.on()方法将返回的数据绑定到#alertdiv?(我不应该这么认为…至少div——一个空的dlg框——应该显示,不是吗?)如果是,那会是什么样子?

HTML:

<div id="alert" title="Alert"></div>

JAVASCRIPT:

$(function() {
$( '#alert' ).dialog({
autoOpen:false,
});
$(document).on('click', '.mledit', function(event) {
//company_id is actually the user_id
var user_id = this.id.split( 'editcopro_' )[1];
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: 'request=edit_company_data&user_id='+user_id,
success:function(data){
$('#co_label').html(data);
$('#co_label').dialog({
autoOpen: true,
height: 600,
width: 800,
modal: true,
buttons: 
{
//***************************************
//******** THIS WORKS *******************
Test: function() {
$( '#alert' ).html( 'Hello there' );
$( '#alert' ).dialog( 'open' );
return false;
//***************************************
},
//... etc ...
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: 'request=index_list_contacts_for_client&user_id=' + user_id,
success: function(data) {
$('#contact_table').html(data);
var tbl = $('#injected_table_of_contacts');
$(this).dialog({
autoOpen: false,
height: 400,
width: 600,
modal: true,
buttons: 
{
Okay: function() {
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: 'request=update_edited_contact_data&contact_id='+contact_id+'&fn='+fn+'&ln='+ln+'&em='+em+'&cp='+cp,
success: function(data) {
alert(data);
//**********************************
//***** THIS DOES NOT: *************
$( '#alert' ).html( data );
$( '#alert' ).dialog( 'open' );
//**********************************
window.location = '' //THIS LINE AUTO-CLOSES THE DLG!;
}
});
$( this ).dialog( "close" );
} //END ELSE
},
Cancel: function() {
$( this ).dialog( "close" );
window.location = '';
}
} /*,
//IMPORTANT DISCOVERY: Having this close section AUTO-CLOSES the prev dialog popup!
close: function() {
//alert('here i am');
window.location = 'index.php';
}*/
})
}
});

});
/*********** >Snip< *************/

完整的代码是巨大的(r),所以我已经为这个问题剪下了必要的部分。请不要太仔细地寻找匹配的括号等。alert()工作正常,它只是.dialog()调用——只有第二个——前面的调用工作正常(包括对话框内部的对话框调用)。

最重要的是,您只是忘记关闭ajax调用了吗?

}});

已解决。请参阅代码中我对解决方案进行注释的两个位置。谁是暴徒?

最新更新