Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修复json.parse regex中JQuery-1.4.1和json-2.0的冲突$&引用;性格_Javascript_Jquery_Regex_Json - Fatal编程技术网

Javascript 修复json.parse regex中JQuery-1.4.1和json-2.0的冲突$&引用;性格

Javascript 修复json.parse regex中JQuery-1.4.1和json-2.0的冲突$&引用;性格,javascript,jquery,regex,json,Javascript,Jquery,Regex,Json,升级到jQuery1.4.1后,我注意到每当我尝试调用json.parse时都会出现错误。这个问题是json中使用的正则表达式的一部分。它在模式中使用的$与JQuery的$快捷方式冲突 我不想在jquery中使用非冲突选项,因为我有很多地方需要用新的快捷方式替换$ 有没有一种方法可以将正则表达式模式用单引号括起来,这样就可以将模式字符串按字面上的字符串处理 json-2.0.js中的断节:(在$上失败) 谢谢 更新: 问题并不像看上去的那样,与$冲突无关。从OP: 错误发生在test.repla

升级到jQuery1.4.1后,我注意到每当我尝试调用json.parse时都会出现错误。这个问题是json中使用的正则表达式的一部分。它在模式中使用的$与JQuery的$快捷方式冲突

我不想在jquery中使用非冲突选项,因为我有很多地方需要用新的快捷方式替换$

有没有一种方法可以将正则表达式模式用单引号括起来,这样就可以将模式字符串按字面上的字符串处理

json-2.0.js中的断节:(在$上失败)

谢谢

更新: 问题并不像看上去的那样,与
$
冲突无关。从OP:


错误发生在test.replace上,因为传入的对象已被反序列化,因此找不到方法
replace
。我猜升级到JQuery 1.4.1在
$.ajax
函数的成功事件中处理结果对象的方式发生了一些变化


您是否确定它在
$
上出现故障,并且是出于这个原因?因为如果是这样的话,那将是一个巨大的命名空间/解析失败。根本没有理由让JavaScript引擎在那里寻找外部符号。它已经按照您询问的方式进行了封装(通过斜杠,它实际上是正则表达式的引号)。如果这真的是问题所在,那么它会像解释器被字符串中的一个$噎住一样令人惊讶。我认为你的问题在别处。

你确定它在
$
上失败了吗?因为如果是这样的话,那将是一个巨大的命名空间/解析失败。根本没有理由让JavaScript引擎在那里寻找外部符号。它已经按照您询问的方式进行了封装(通过斜杠,它实际上是正则表达式的引号)。如果这真的是问题所在,那么它会像解释器被字符串中的一个$噎住一样令人惊讶。我认为你的问题出在其他地方。

这里有一个页面拉入jQuery 1.4.1和json2.js,它调用JSON.parse(),没有异常或错误:

这里有一个页面拉入jQuery 1.4.1和json2.js,它调用JSON.parse(),并且它没有异常或错误:

错误在
测试中爆炸。replace
传入的对象已经反序列化,因此找不到方法
replace
。我猜升级到JQuery 1.4.1在
$.ajax
函数的成功事件中处理结果对象的方式发生了一些变化

应删除此问题


很显然,这个问题不能随着所建议的答案的数量而被删除

测试时出错。替换传入的对象已反序列化,因此找不到方法
replace
。我猜升级到JQuery 1.4.1在
$.ajax
函数的成功事件中处理结果对象的方式发生了一些变化

应删除此问题


很显然,这个问题不能随着所建议的答案的数量而被删除

你有多确定这是真的?这看起来很有意思,因为美元在语法上与用作jQuery函数标识符的“$”不同。就像有一个名为“foo”的变量一样,regex/foo/不会被混淆。当你说它“失败”时,到底会发生什么?当我回滚对jquery-1.3.2.js的引用时,我没有这个问题。我已经签入了firebug和VS2008.net的js调试器。他们都认为模式中的$是JQuery对象。我用新的库运行了我的大型JQuery站点,到处都是带有美元符号的正则表达式,我一点问题都没有。Firebug到底告诉了你什么,或者说做了什么,让你认为$regex特殊字符实际上就是jQuery对象?当你说“json.parse”时,你是指“$.parseJSON()”还是你在使用其他json库?@Pointy:我想他/她在使用json-2.0.js。你有多确定会发生这种情况?这看起来很有意思,因为美元在语法上与用作jQuery函数标识符的“$”不同。就像有一个名为“foo”的变量一样,regex/foo/不会被混淆。当你说它“失败”时,到底会发生什么?当我回滚对jquery-1.3.2.js的引用时,我没有这个问题。我已经签入了firebug和VS2008.net的js调试器。他们都认为模式中的$是JQuery对象。我用新的库运行了我的大型JQuery站点,到处都是带有美元符号的正则表达式,我一点问题都没有。Firebug到底告诉了你什么,或者做了什么,让你认为$regex特殊字符实际上就是jQuery对象?当你说“json.parse”时,你是指“$.parseJSON()”还是你在使用其他json库?@Pointy:我想他/她在使用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, ''))) {
.....
}