Я получаю «Неверный JSON» после выполнения запроса JQuery AJAX. Этот код запроса не важен, поэтому я решил его опустить.
Я углубился в библиотеку 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':']'}"
Вы можете увидеть это на этом JSFiddle
Более того, происходят следующие преобразования:
'{x:12}' --> '{x:]}'
'{"x":"12"}' --> '{],]}'
Я предполагаю, что кто-то мог бы объяснить мне, почему регулярное выражение делает это, но мне также любопытно, почему jQuery делает это.
Любая помощь будет высоко ценится