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

时间:2012-01-04 14:57:41

标签: javascript extjs internet-explorer-8 runtime-error

我在以下代码中遇到错误,该代码在除IE8之外的所有浏览器中都运行良好(未通过IE9检查):

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

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

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

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

5 个答案:

答案 0 :(得分:1)

使用eval解析JSON的原因有很多种。正如JSON.org所述:

  

eval功能非常快。但是,它可以编译和执行   任何JavaScript程序,都可能存在安全问题。指某东西的用途   当来源可信并且胜任时,将显示eval。它很多   更安全地使用JSON解析器。在XMLHttpRequest的Web应用程序中,   通信只允许提供相同的来源   页面,所以它是值得信赖的。但它可能没有能力。如果是服务器   它的JSON编码不严谨,或者它不严格   验证其所有输入,然后它可以提供无效的JSON文本   这可能是危险的脚本。 eval函数会   执行脚本,释放它的恶意。

因此你需要使用JSON解析器 - 再次,JSON.org提供了一个,以及jQuery和extjs等框架中的一个 - 请参阅此SO问题以获取更多信息(包括示例)答案):Parsing simple JSON using Ext gives SyntaxError: Unexpected token ILLEGAL

答案 1 :(得分:0)

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

这为我工作......

来源:link

答案 2 :(得分:0)

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

jsonObject = Ext.decode(json);

这是类decodeExt.util.JSON方法的简写方法。该方法还需要另一个布尔参数,以确保在json不正确时返回null。

答案 3 :(得分:0)

许多可能的错误,我遇到的错误是从服务器发送的json结构存在错误,例如“逗号”,“{”“}”或“[”“]过多或不足“

答案 4 :(得分:0)

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

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

您可以在此处找到合适的商店http://docs.sencha.com/ext-js/3-4/#!/api/Ext.data.JsonStore