您的位置:首页 > Web前端 > JavaScript

json.js与ExtJS一起使用的问题

2009-05-24 17:29 846 查看
json.js和ExtJS都是有名的开源的东东,但是这两个有名的东东在一起使用时会出现一些问题,我就遇到一例,害我折腾了大半天,郁闷!现把问题和解决方法记下来以为后来者提个醒。

问题的出现

当如下使用ExtJS

win = new Ext.Window({

title: '123',

width: 600,

height: 400,

closeAction: 'close', // 注意这里是close,也就是说当关闭窗口时,窗口会被销毁destroy

plain: true,

resizable : false,

layout: 'border',

items: [ grid ], // grid是一个Ext.grid.GridPanel

buttons: [{

text: '关闭',

handler: function(){

win.close();

win = null;

}

}]

});

并且页面引用了json.js。当执行win.close()或点击左上角的x按钮时会出现错误

---------------------------

错误

---------------------------

出现了运行时间错误。

是否要进行调试?

行: 142

错误: 'config.isTarget' 为空或不是对象

---------------------------

是(Y) 否(N)

---------------------------

解决办法

打开json.js文件,到文件末尾,找到

if (!Object.prototype.toJSONString) {

Object.prototype.toJSONString = function (filter) {

return JSON.stringify(this, filter);

};

Object.prototype.parseJSON = function (filter) {

return JSON.parse(this, filter);

};

}


代码,注释掉,这样就不出问题了。

分析

出现问题的原因在于ExtJS操作了json为对象增加的两个函数toJSONString和parseJSON,json.js的做法是好的,ExtJS的做法也是不错的,但是把他们放在一起就会打架,之所谓鱼与熊掌不可兼得啊,只好委屈一下json.js了,另外追究ExtJS的问题也是难度的,所以就遵循吃柿子的规则了。

在注掉那几行代码(见解决办法)后,我们再处理JSON时可能会多写一些代码,来个补救措施吧,呵呵

在json.js最后加上一下代码

function toJSON(obj, filter) {

if (typeof obj != 'string')

return JSON.stringify(obj, filter);

else

return JSON.parse(obj, filter);

}


以后不管是JSON对象到字符串,还是字符串到JSON对象,都可以使用toJSON函数搞
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐