Из начального комментария я делаю вывод, что в прецеденте указывается, является ли ответ HTML или JSON. В этом случае, когда вы do получаете JSON, вам, вероятно, следует проанализировать его и обработать недопустимый JSON в какой-то момент в вашем коде. Помимо всего прочего, я думаю, вы хотели бы, чтобы ваш браузер информировал вас о том, следует ли ожидать JSON, но получен недействительный JSON (как и пользователи по доверенности с каким-либо значимым сообщением об ошибке)!
Поэтому выполнять полное регулярное выражение для JSON не нужно (как было бы - по моему опыту - для большинства случаев использования). Возможно, вам лучше использовать что-то вроде следующего:
function (someString) {
// test string is opened with curly brace or machine bracket
if (someString.trim().search(/^(\[|\{){1}/) > -1) {
try { // it is, so now let's see if its valid JSON
var myJson = JSON.parse(someString);
// yep, we're working with valid JSON
} catch (e) {
// nope, we got what we thought was JSON, it isn't; let's handle it.
}
} else {
// nope, we're working with non-json, no need to parse it fully
}
}
, что должно избавить вас от необходимости обрабатывать исключительные коды, отличные от JSON и одновременно позаботятся о duff json.