Обходной путь поиска Ajax при отключенном JavaScript - PullRequest
2 голосов
/ 20 февраля 2011

У меня есть страница поиска на моем сайте.Поиск извлекает из пары (в конечном итоге несколько) API из внешних источников.Иногда поиск может занять до 5 секунд.Из-за этого я хотел бы загрузить свою поисковую страницу хотя бы с загрузочным GIF-файлом и позволить AJAX начать извлекать данные, отображая их постепенно.(аналогично http://gamespot.com, хотя это плохой пример, поскольку поиск не работает с отключенным JS)

Конечно, я должен учитывать пользователей, которые отключили Javascript, поэтому для них япросто позвольте PHP выполнить поиск, и им придется смириться с ожиданием.

Как лучше всего это реализовать?Если я использую <noscript>, тогда всем пользователям все равно придется ждать загрузки 5-секундной части PHP.

Могу ли я просто попросить форму поиска отправить пользователя на разные страницы в зависимости от их статуса JS?

Ответы [ 4 ]

1 голос
/ 20 февраля 2011

Возможно, часть noscript определяет iframe, который загружает результаты из длительного PHP-запроса?

Могу ли я, чтобы форма поиска отправляла пользователя на разные страницы в зависимости от его статуса JS?

Если у вас есть пользователи, которые приходят на вашу страницу, а затем отправляют форму, это абсолютно лучший способ. E.g.:

HTML:

<form id='theForm' action='long_search.php'>
....

JavaScript:

hookEvent(document.getElementById('theForm'), 'submit', function(event) {
    event.preventDefault();
    loadAjaxSearchResults();
    return false;
});

... где hookEvent - это функция, которая использует addEventListener или attachEvent (в IE).


Не по теме : hookEvent, как и многие другие вещи, проще, если вы используете библиотеку, такую ​​как jQuery , Prototype , YUI , Закрытие или любой из нескольких других . Например, с помощью jQuery:

$("#theForm").submit(function() {
    $("#resultsTarget").load("ajaxsearch.php", $(this).serialize());
    return false;
});
0 голосов
/ 20 февраля 2011

Прогрессивное улучшение:

Сделайте так, чтобы версия PHP работала в первую очередь. Это доступно всем. Затем добавьте javascript, чтобы, если он был доступен, он выполнял ajax-запросы за кулисами, чтобы захватить контент и обновить текущую страницу.

Посмотрите на эту книгу как на простое, отличное чтение на эту тему: Пуленепробиваемый Ajax

0 голосов
/ 20 февраля 2011

нет, вы применяете свой код js (автозаполнение, если я правильно понял?) До поля ввода.Думайте о Javascript как о расширении.Если js отключен, автозаполнение в поле ввода не распространяется.Вы можете поместить текст, где вы говорите, чувак, включите JS в противном случае это будет долгий поиск.И если js включен, скрыть текст

0 голосов
/ 20 февраля 2011

Без JavaScript вам нужно будет отправить данные на сервер и выполнить полный постбэк (обновление) на странице.Как в старые добрые времена.;)

...