升级到jquery 1.4.1后,我注意到我试图调用json.parse时出现错误。该问题是json中使用的正则表达式的一部分。它在与JQuery的$快捷方式冲突的模式中使用$。
我不想在jquery中使用非冲突选项,因为我有很多地方我必须用新修正的快捷方式替换$。
有没有办法用单引号或其他东西包装正则表达式模式,以便模式字符串按字面意思处理为字符串?
json-2.0.js中的断面:(在$上失败)
if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
.....
}
由于
问题并非出现,与$
冲突无关。来自OP:
错误是
test.replace
上的爆炸,因为传入的对象已经反序列化,因此找不到方法replace
。我想升级到JQuery 1.4.1对$.ajax
函数的成功事件处理结果对象的方式有一些改变。
答案 0 :(得分:3)
你肯定它在$
失败了吗?因为这个原因?因为这是一个巨大的命名空间/解析失败,如果是这样的话。完全没有理由JavaScript引擎应该在那里寻找外部符号。它的已经封装了你所询问的方式(通过斜杠,这是正则表达式的有效引号)。如果这确实是问题所在,那就像解释器在一个字符串内部窒息一样令人惊讶。我认为你的问题出在其他地方。
答案 1 :(得分:1)
这是一个引入jQuery 1.4.1和json2.js的页面,它调用JSON.parse(),它没有异常或错误:http://gutfullofbeer.net/json.html
答案 2 :(得分:0)
错误是test.replace
上传入的对象已被反序列化,因此未找到方法replace
。我想升级到JQuery 1.4.1会对$.ajax
函数的成功事件处理结果对象的方式进行一些更改。
应删除此问题
显然,此问题无法通过建议的答案数量删除。