jQuery MiniUI

标题: 在关闭页面的时候报错Uncaught TypeError: Cannot read property 'accept' [打印本页]

作者: 破晓    时间: 2017-6-29 16:18:54     标题: 在关闭页面的时候报错Uncaught TypeError: Cannot read property 'accept'

我从A页面一个按钮打开新页面B,然后B页面新增成功之后自动关闭页面报错A页面的js方法
emrGrid.on("cellclick", function(e){
                        if(e.column.header == '操作'){
                                var emrNo = e.record.emrNo;
                                mini.open({
                                        url : url,
                                        title : "评分",
                                        width : 770,
                                        height : 500,
                                        ondestroy: function (action) {
                                            if(action != "cancel" && action != "close"){
                                                    emrGrid.reload();
                                            }
                                    }
                                });
                        }
            });

B页面方法
function onOk(){
                var data = scoreGrid.getChanges();
                var json = mini.encode(data);
               
                $.ajax({
                type:"POST",
                url:url,
                data:{ data : json },
                datatype: "json",
                success:function(data){
                        mini.alert(data.msg,'',function(){
                                //CloseWindow("save");
                                //window.CloseOwnerWindow();
                        });
                },
                error: function(){
                        mini.alert("请求失败");
                }         
             });
        }


在b页面的js方法里面,两个关闭窗口的方式都会报错Uncaught TypeError: Cannot read property 'accept' of null。 请问是怎么回事啊。

作者: 破晓    时间: 2017-6-29 16:29:17

版主,管理员??
作者: 破晓    时间: 2017-6-29 16:35:12

顶!d=====( ̄▽ ̄*)b
作者: dforce    时间: 2017-6-29 16:55:26

看代码没发现什么问题,b页面不用ajax,直接调用CloseWindow方法关闭能关闭吗?有报错吗?
另外,你这2个页面有没有跨域?
作者: 破晓    时间: 2017-6-29 17:05:14

dforce 发表于 2017-6-29 16:55
看代码没发现什么问题,b页面不用ajax,直接调用CloseWindow方法关闭能关闭吗?有报错吗?
另外,你这2个页 ...

没有跨域,都是我本地的操作。
// 保存评分
        function onOk(){
                var data = scoreGrid.getChanges();
                var json = mini.encode(data);
                CloseWindow("save");
                //waitClick();
                /* $.ajax({
                type:"POST",
                url:baseUrl + "/qualityController/updateScore",
                data:{ data : json },
                datatype: "json",
                success:function(data){
                        mini.alert(data.msg,'',function(){
                                //CloseWindow("save");
                                //window.CloseOwnerWindow();
                        });
                },
                error: function(){
                        mini.alert("请求失败");
                }         
             }); */
        }
我改成这样还是报错

作者: 破晓    时间: 2017-6-29 17:06:43

破晓 发表于 2017-6-29 17:05
没有跨域,都是我本地的操作。
// 保存评分
        function onOk(){

主要是报错的属性,我根本就没用, 不知道为什么,我另外几个页面用这种方法关闭页面都可以成功。  代码就错在这个一行, 只要用这个关闭页面的代码就会有这个错报出。
作者: dforce    时间: 2017-6-29 19:16:01

破晓 发表于 2017-6-29 17:06
主要是报错的属性,我根本就没用, 不知道为什么,我另外几个页面用这种方法关闭页面都可以成功。  代码 ...

直接调用closewindow都出错了?我怀疑是不是你这里有跨域?
检查一下弹出页面和主页面是在同一域名下?
作者: 破晓    时间: 2017-6-30 10:53:22

dforce 发表于 2017-6-29 19:16
直接调用closewindow都出错了?我怀疑是不是你这里有跨域?
检查一下弹出页面和主页面是在同一域名下? ...

真的没有跨域,但是页面是有3层。
首先有一个主页面M, 然后M页面有一个打开新窗口A页面,然后A页面又打开一个新窗口B页面,  在A页面的操作关闭窗口和reload dataGrid是没有问题的, 但是在B页面如果要关闭窗口并reload dataGrid的时候就会有这个错了,我不知道是不是miniui对多层父级窗口会有说明底层封装。

作者: 破晓    时间: 2017-6-30 10:55:31

错误就在于最上层的页面关闭的时候,reload dataGrid会报错,如果不reload就不会报错, 但是我希望用户修改了数据能及时体现出来。
作者: felt    时间: 2017-6-30 11:41:09

破晓 发表于 2017-6-30 10:55
错误就在于最上层的页面关闭的时候,reload dataGrid会报错,如果不reload就不会报错, 但是我希望用户修改 ...

mini.open都是顶级弹出,你b页面关闭的时候刷新的是a页面的表格还是M页面的表格
最好提供一下重现页面来分析一下。
作者: 破晓    时间: 2017-6-30 13:58:23

felt 发表于 2017-6-30 11:41
mini.open都是顶级弹出,你b页面关闭的时候刷新的是a页面的表格还是M页面的表格
最好提供一下重现页面来 ...

M页面是最基础的页面(现在操作的过程暂时不会动这个页面的数据),M可以弹出A页面, A可以弹出B页面,页面关系是这样的。
现在问题是:   在B页面的save方法完成后关闭B页面并刷新A页面的dataGrid。  在这个过程中,关闭和刷新动作是在A页面mini.open中的ondestroy执行的,也是在这个方法里面报错的, 我怀疑是在ondestroy里面没有获取到刷新A页面的dataGrid元素,但是我调试后发现是获取到的。所以很疑惑。
我直接把几个页面给你吧, 注明一下:
qryEmrQuality.jsp 是M页面, viewEmrQualityDetail.jsp 是A页面, editEmrQualityScore.jsp 是B页面,
M页面emrList方法跳转到A页面,
A页面加载函数里面emrGrid.on跳转到B页面,
B页面onOk保存动作并调用关闭页面方法。


作者: felt    时间: 2017-6-30 15:44:34

破晓 发表于 2017-6-30 13:58
M页面是最基础的页面(现在操作的过程暂时不会动这个页面的数据),M可以弹出A页面, A可以弹出B页面,页面 ...

[attach]9434[/attach]按你说的逻辑我们测试了一下,未发现你关闭b的时候有报错,这是我的测试例子,能基于例子修改重现出的问题
作者: 破晓    时间: 2017-6-30 16:20:02

felt 发表于 2017-6-30 15:44
按你说的逻辑我们测试了一下,未发现你关闭b的时候有报错,这是我的测试例子,能基于例子修改重现出的问 ...

很多时候静态的页面是没问题,但是在和后台的交互中,或者说有数据交互的时候就不一样了。
因为我之前在没有完全弄完这块功能的时候,3个页面是可以正常走流程的,我弄完之后最后做测试就出问题了。
算了,我自己再试试另外的办法吧,还是多谢版主了
作者: felt    时间: 2017-6-30 16:39:21

破晓 发表于 2017-6-30 16:20
很多时候静态的页面是没问题,但是在和后台的交互中,或者说有数据交互的时候就不一样了。
因为我之前在 ...

我这边也换过后台数据连接的,也没发现问题,只是让你容易测试一点我改成了加载txt文件。重现不出来真不好分析。




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2