我在以下代码中遇到错误,该代码在除IE8之外的所有浏览器中都运行良好(未通过IE9检查):
doDecode = function(json){
return eval("(" + json + ")"); //RunTime Error
我收到JavaScript运行时错误,即"语法错误"。
此外,在许多其他行中,我遇到了不同类型的运行时错误,因为我的应用程序没有按预期运行。 (我使用的是ext-js 3.3.1) 请帮我解决这个问题...... 谢谢你...
(也想知道ext-js与IE8兼容???)
答案 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)
答案 2 :(得分:0)
为什么不使用ExtJS提供的解析器?在ExtJS 3中,您应该可以执行以下操作:
jsonObject = Ext.decode(json);
这是类decode
中Ext.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