使用ext-js在IE8中获取运行时错误

Getting runtime error in IE8 using ext-js

本文关键字:获取 运行时错误 IE8 ext-js 使用      更新时间:2023-09-26

我在以下代码中遇到错误,该代码在除IE8之外的所有浏览器中都能完美运行(未与IE9一起检查):

doDecode = function(json){
            return eval("(" + json + ")"); //RunTime Error

我收到JavaScript运行时错误,即"语法错误"。

此外,在许多其他行中,我也遇到了不同类型的运行时错误,因为我的应用程序没有按预期运行。(我使用的是extjs3.3.1)请帮我解决这个问题。。。谢谢。

(还想知道ext-js与IE8兼容吗??)

使用eval解析JSON不好的原因有很多。如JSON.org上所述:

eval函数非常快。但是,它可以编译和执行任何JavaScript程序,因此可能存在安全问题。使用eval在来源可信且有能力时指示。太多了使用JSON解析器更安全。在基于XMLHttpRequest的web应用程序中,只允许同一来源的通信页面,因此值得信任。但它可能无法胜任。如果服务器JSON编码不严格,或者如果不严格验证它的所有输入,然后它可以传递无效的JSON文本这可能带有危险的脚本。eval函数将执行脚本,释放其恶意。

因此,您将需要使用JSON解析器——同样,JSON.org提供了一个,以及jQuery和extjs等框架中的解析器——请参阅这个so问题以获取更多信息(包括答案中的示例):使用Ext解析简单的JSON会产生SyntaxError:意外的令牌ILLEGAL

doDecode = function(json){
            return eval ("(" + json + ')');  

这对我有用…

来源:链接

为什么不使用ExtJS提供的解析器?在ExtJS 3中,您应该能够执行以下操作:

jsonObject = Ext.decode(json);

这是类Ext.util.JSONdecode方法的简写方法。该方法还采用另一个布尔参数,以确保在json错误时返回null。

许多可能的错误,我遇到的一个错误是从服务器发送的json结构存在错误,例如"逗号"、"{"、"}"或"["、"]"

有时甚至Ext.decode(json);不起作用。这是因为我们无法识别代码中的某些错误,而像FF这样的智能浏览器不会为此大声疾呼。

在这种情况下,您可以尝试使用Ext.data.JsonStore,直接将JSON字符串与之关联。

你可以在这里找到合适的商店http://docs.sencha.com/ext-js/3-4/#/api/Ext.data.JsonStore

相关文章: