升级到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
函数的成功事件中被处理的方式发生了一些变化。
你对此有多确定?看起来不太可能,因为美元在语法上与用作jQuery函数标识符的“$”不同。就像如果你有一个名为“foo”的变量,正则表达式/ foo /不会混淆。当你说它“失败”时,究竟发生了什么? – Pointy 2010-02-07 15:46:32
当我回滚我的引用jquery jquery-1.3.2.js我没有这个问题。我检查过萤火虫和VS2008.net的js调试器。都认为模式中的$是JQuery对象。 – used2could 2010-02-07 15:48:47
嗯,我已经用新库运行了我的大型jQuery负载网站,并且我有遍布整个地方的美元符号的正则表达式,而且我根本没有任何问题。Firebug告诉你什么,或者怎么做,让你认为它认为$ regex特殊字符实际上是jQuery对象? – Pointy 2010-02-07 15:51:06