Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 带有AJAX加载的jqGrid的jQuery UI对话框未关闭_Jquery Ui_Jqgrid - Fatal编程技术网

Jquery ui 带有AJAX加载的jqGrid的jQuery UI对话框未关闭

Jquery ui 带有AJAX加载的jqGrid的jQuery UI对话框未关闭,jquery-ui,jqgrid,Jquery Ui,Jqgrid,我在jQueryUI对话框中有一个由AJAX加载的jqGrid。除了对话框没有关闭外,一切正常。当我在两个按钮中单击时,它会到达警报,但对话框不会关闭 buttons: { 'Confirm': function() { alert('OK Confirm'); $('#test-grid').dialog('close'); }, 'Cancelar': function() { alert('OK Cancel');

我在jQueryUI对话框中有一个由AJAX加载的jqGrid。除了对话框没有关闭外,一切正常。当我在两个按钮中单击时,它会到达警报,但对话框不会关闭

buttons: {
    'Confirm': function() {
        alert('OK Confirm');
        $('#test-grid').dialog('close');
    },
    'Cancelar': function() {
        alert('OK Cancel');
        $(this).dialog('close');
    }
}
我试过使用
$(“#测试网格”).dialog('close')
$(this).dialog('close')
,但没有人能工作。如果我删除AJAX加载的jqGrid,一切都会正常工作。 Firefox和Chrome上的错误控制台为空

我正在加载jqGrid页面,其中包含:

$('#test-grid').load('/grid').dialog('open');
有人能帮我吗

更新


我尝试使用AJAX加载一个简单的HTML代码段,但问题仍然存在。

问题是对
load
的调用干扰了打开对话框的调用。您可以通过将AJAX内容加载到
测试网格的子元素中来解决这个问题。例如:

 $('#test-grid-child').load('/grid');
 $('#test-grid').dialog('open');
$('#test-grid-child').load('ajax/test.html', function() {
  alert('Load was performed.'); // Perform any necessary UI action here
});

更新

我只是读了这篇文章,并对此进行了更多的思考。发生的情况是,当代码
$(“#测试网格”).load(“/grid”).dialog('open'),启动AJAX请求并立即创建对话框。但是一旦
加载
的AJAX请求完成,jQuery就会返回并覆盖
#测试网格
的内容。这解释了为什么对话框无法关闭,因为基础标记是从对话框对象下面修改出来的

将数据检索到子元素可以消除这个问题,因为
load
dialog
现在分别处理DOM的不同部分

注意,如果Ajax请求需要很长时间才能完成,您可能需要考虑实现<代码>完整的函数来给用户反馈-可能是通过显示一个旋转器直到数据准备好为止。例如:

 $('#test-grid-child').load('/grid');
 $('#test-grid').dialog('open');
$('#test-grid-child').load('ajax/test.html', function() {
  alert('Load was performed.'); // Perform any necessary UI action here
});

无论如何,信息可能比您需要的要多,但我只是想趁这个问题在我脑海中仍然清晰的时候更新它…

问题是对
load
的调用干扰了打开对话框的调用。您可以通过将AJAX内容加载到
测试网格的子元素中来解决这个问题。例如:

 $('#test-grid-child').load('/grid');
 $('#test-grid').dialog('open');
$('#test-grid-child').load('ajax/test.html', function() {
  alert('Load was performed.'); // Perform any necessary UI action here
});

更新

我只是读了这篇文章,并对此进行了更多的思考。发生的情况是,当代码
$(“#测试网格”).load(“/grid”).dialog('open'),启动AJAX请求并立即创建对话框。但是一旦
加载
的AJAX请求完成,jQuery就会返回并覆盖
#测试网格
的内容。这解释了为什么对话框无法关闭,因为基础标记是从对话框对象下面修改出来的

将数据检索到子元素可以消除这个问题,因为
load
dialog
现在分别处理DOM的不同部分

注意,如果Ajax请求需要很长时间才能完成,您可能需要考虑实现<代码>完整的函数来给用户反馈-可能是通过显示一个旋转器直到数据准备好为止。例如:

 $('#test-grid-child').load('/grid');
 $('#test-grid').dialog('open');
$('#test-grid-child').load('ajax/test.html', function() {
  alert('Load was performed.'); // Perform any necessary UI action here
});

无论如何,比您可能需要的更多的信息,但我只是想在这个问题还记忆犹新的时候更新它…

您能告诉我们您用于创建实际网格的代码吗?是的,我可以,但是使用AJAX加载的任何内容都会导致这个问题,不仅仅是jqGrid.Hmmm。。。您是否尝试过使用
load
将数据检索到
test grid
的子元素中,而不是直接加载该元素?没问题,我很高兴您能够正常工作!)我只是重新发布了这个评论作为回答…你能告诉我们你用来创建实际网格的代码吗?是的,我能,但是使用AJAX加载的任何内容都会导致这个问题,不仅仅是jqGrid.Hmmm。。。您是否尝试过使用
load
将数据检索到
test grid
的子元素中,而不是直接加载该元素?没问题,我很高兴您能够正常工作!)我只是重新发布了评论作为回答。。。