Javascript: Проверьте, является ли текст эффективным HTML-документом - PullRequest
1 голос
/ 15 июля 2011

Наше веб-приложение будет развернуто как часть системы с SSO. После истечения времени ожидания мои XmlHttpRequests перенаправляются на страницу входа, мы не можем это контролировать.

В каждом обработчике ответа AJAX я должен проверить, является ли текст ответа полной страницей HTML или нет. (Фрагменты HTML и JSON являются действительными ответами.)

Должен признать, я довольно новичок в технологиях на стороне клиента. Я ловлю полные страницы HTML примерно так:

if (data.search(/<html>/) > -1) { ... }

Я предполагаю, что это ужасно неэффективно, опирается на наши условные обозначения и может привести к незначительным ошибкам в будущем. Особенно учитывая, что там есть целый веб-браузер, основной целью которого является разбор HTML ...

Пожалуйста, поделитесь более элегантными решениями для распознавания текста как полных документов HTML!

(JQuery уже используется в проекте.)

Закрытие редактирования:

Я немного расстроен, когда выбираю один ответ для принятия, поскольку решение, похоже, представляет собой совокупность двух идей плюс из комментариев:

У меня будут отдельные валидаторы для фрагмента JSON и HTML:

  • Там, где я ожидаю JSON, ответ должен быть JSON.

  • Там, где я ожидаю фрагмент HTML (а не полный документ), ответ должен заканчиваться закрывающим тегом (без учета пробелов), но не (без учета регистра). Страница входа в систему единого входа должна заканчиваться, мы запишем это «ограничение».

Спасибо всем за помощь!

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Вы можете использовать parseJson () в своем ответе. Если он возвращает объект, то это был json, иначе это был HTML-фрагмент

responsetrial = $.parseJson(response);

if(typeof reponsetrial ==='object'){
//it's json
}else{
//it's html
1 голос
/ 15 июля 2011

Если вы хотите проверить, является ли ответ полной HTML-страницей, вы, вероятно, хотите начать смотреть в конце, не так ли?Проверка того, находится ли </html> в конце, не теряет много производительности.Если вы этого не хотите, уточните, что вы подразумеваете под полной HTML-страницей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...