Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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
Javascript JQGRID:触发器重新加载在iFrame上不起作用_Javascript_Jquery_Jqgrid - Fatal编程技术网

Javascript JQGRID:触发器重新加载在iFrame上不起作用

Javascript JQGRID:触发器重新加载在iFrame上不起作用,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我有一个带有iFrame的网页。它加载带有jqGrid表的网页(同一域)。我现在想做的是: 您按下一个名为search的链接,它会打开一个带有筛选表单的对话框来筛选您的搜索 当您按下对话框内的search按钮时,它会更改jqGrid url参数,并应.trigger('reloadGrid') 除了重新加载网格之外,它可以做所有的事情,我不知道为什么 有什么建议吗 代码: 我发现在使用JSON数据调用trigger('reloadGrid')之前,应该重置datatype参数 $("#gri

我有一个带有iFrame的网页。它加载带有jqGrid表的网页(同一域)。我现在想做的是:

  • 您按下一个名为
    search
    的链接,它会打开一个带有筛选表单的对话框来筛选您的搜索
  • 当您按下对话框内的
    search
    按钮时,它会更改jqGrid url参数,并应
    .trigger('reloadGrid')
除了重新加载网格之外,它可以做所有的事情,我不知道为什么

有什么建议吗

代码:


我发现在使用JSON数据调用
trigger('reloadGrid')
之前,应该重置
datatype
参数

$("#grid").jqGrid('setGridParam', { datatype: 'json' });
为了回应您的评论,我将拆分链式方法调用,然后在Chrome debugger中的
e.preventDefault()
上设置一个断点,这样您就可以确保所有内容都被命中

$('#dialog').find('.dialog-action-search').button(
    { 
        icons: { primary: 'ui-icon-search' } ,
        text: true
    });
$('#dialog').find('.dialog-action-search').click(function(e) {
    e.preventDefault();
    var grid = $('.content-center').contents().find('#list');
    $(grid).jqGrid('setGridParam', { url: 'filteredsearch.html?option=1' });
    $(grid).jqGrid('setGridParam', { datatype: 'json' });
    $(grid).trigger('reloadGrid');
    $("#dialog").dialog('destroy');
    $("#dialog").remove();
});

虽然我是链接的爱好者,但在这种情况下,我认为如果不更明确地做一些事情,就无法找到问题的根源,尤其是在使用
.find
时。你怎么知道
.find
实际返回的是你想要的元素呢?

setGridParam
返回的是
jqGrid
对象,而不是
jQuery
对象,所以我很确定你不能链接
触发器
方法。请尝试以下方法:

var list = $('.content-center').contents().find('#list')
list.setGridParam({
    url: 'filteredsearch.html?option=1'
})
list.trigger('reloadGrid');

我也遇到了同样的问题。我没有时间调查它为什么会发生,但找到了解决办法。 在一个javascript文件中,该文件在iframe中加载我声明的网格

window.top.reloadEventList = function () {
$("#grid").trigger("reloadGrid");};
那就打电话吧

window.top.reloadEventList()
而不是

list.trigger('reloadGrid')

在网格的初始设置中,您的
数据类型设置为什么?
json
,问题是我没有得到任何错误。就像从来没有重新加载过一样,好像因为某种原因无法重新加载。它更改了
url
,因为我在jqGrid的
navGrid
上按下了刷新按钮,它抛出了一个错误,因为url不存在。此外,请尝试使用存在且未接收任何数据的
url
。按下刷新按钮时,我的jqGrid变为空,但仍不会触发重新加载网格。请参阅我的答案。如果这不起作用,你有没有摆弄过它,看看它是否真的打过电话?谢谢你的回答,但我已经试过了,但它不起作用:我试过了,但仍然不起作用:新的url设置好了,一切都设置好了,因为我按下刷新按钮时已经用Chrome检查过了,它向新的url发送请求以检索数据。那么您可以看到它发送请求了吗?Chrome调试器中是否存在Javascript错误?更好的是,您是否使用Fiddler跟踪请求和响应?当我按下
navGrid
上的
refresh
按钮时,它会发送请求。它没有像使用
.trigger('reloadGrid')时那样自动执行。那么,这个方法永远不会被执行,我不知道为什么。它没有在Chrome调试器中给出Javascript错误,我也没有上传提琴来展示一个示例,因为我不知道它是否能与iFrame一起正常工作。我还尝试删除对列表的所有访问,并且仅使用
$('.content center').contents().find('#list').trigger('reloadGrid')而且它也不起作用。从未使用过它,但我告诉过你它不起作用。Chrome不会在
网络
选项卡上显示任何请求。另外,当我加载页面时,网格中充满了一些数据,但是当你尝试过滤时,它应该显示空网格,因为我没有在服务器端实现过滤器,只有当我按下jqGrid
navGrid
的刷新按钮时,它才会触发
reloadGrid
list.trigger('reloadGrid')