在制作jQuery AJAX请求后,我得到了'无效的JSON'。这个请求代码并不重要,所以我选择忽略它。jQuery中的正则表达式支持(1.5.2)
我已经深入了解jQuery库,并将相关的代码汇总到下面的代码片段中。因此,鉴于我的请求返回字符串“{'x':'1'}
”,为什么在处理它的过程中,jQuery返回“{'x':']'}
”?
//regex values stripped from jQuery 1.5.2.
var data = "{'x':'1'}";
var rvalidchars = /^[\],:{}\s]*$/;
var rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
var rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
//test the various stages of data.replace from the jQuery library
alert (data.replace(rvalidescape, "@")); // {'x':'1'}"
alert (data.replace(rvalidescape, "@").replace(rvalidtokens, "]")); //{'x':']'}"
alert (data.replace(rvalidescape, "@").replace(rvalidtokens, "]").replace(rvalidbraces, "")); //{'x':']'}"
您可以在this JSFiddle
Moreoever看到它,下面的转换发生:
'{x:12}' --> '{x:]}'
'{"x":"12"}' --> '{],]}'
我猜有人为什么正则表达式做这可以向我解释,但我也很好奇jQuery为什么要这样做。
任何帮助,将不胜感激
感谢您的建议。认为我一定在做一些愚蠢的事情。这一切都与正确形成的JSON正常工作。 – 2011-04-18 12:57:40
引用的jquery逻辑受到http://cdnjs.cloudflare.com/ajax/libs/json2/20130526/json2.js的启发 – 131 2014-06-01 21:23:36