在製作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