javascript: означает ли прогрессивное улучшение отсутствие json с ajax?

Я прочитал эту статью здесь, в которой говорится о прогрессивном улучшении для javascript, и автор упомянул:

Во-первых, создайте старомодный веб-сайт, который использует гиперссылки и формы для передачи информации на сервер. Сервер возвращает целые новые страницы с каждым запросом.

Теперь используйте JavaScript, чтобы перехватывать эти ссылки и отправлять формы, а вместо этого передавать информацию через XMLHttpRequest. Затем вы можете выбрать, какие части страницы необходимо обновить вместо обновления всей страницы.

Мне немного любопытно, означает ли это возврат html-разметки на стороне сервера вместо json, что обычно означает создание разметки на стороне клиента? Есть ли недостатки у такого подхода?

Кроме того, я заметил, что приложения, например Facebook, выглядят довольно испорченными, когда я отключил Javascript (не могу публиковать обновления и т. Д.). Означает ли это, что они не справляются с постепенной деградацией должным образом?


person goh    schedule 05.06.2011    source источник


Ответы (3)


Означает ли прогрессивное улучшение отсутствие json с ajax?

Нет, это определенно не означает это. Если JavaScript отключен, XMLHttpRequest отсутствует, поэтому нет ajax.

Теперь используйте JavaScript, чтобы перехватывать эти ссылки и отправлять формы, а вместо этого передавать информацию через XMLHttpRequest.

Биты JavaScript, которые перехватывают ссылки и отправляют формы, могут свободно изменять место выполнения запросов, параметры URL-адреса и т. Д., Что означает, что ajaxified URL-адреса не обязательно должны быть идентичны URL-адресам без JavaScript. Например:

<a href="/some/page.html">linky</a>

может быть перехвачен и преобразован в XMLHttpRequest, который фактически сделан для

  • /some/page.json, or
  • /some/page.html?ajax=1, or
  • /bibbidi/bobbidi/boo (несмотря ни на что)
person Matt Ball    schedule 05.06.2011
comment
Мэтт, на самом деле я имел в виду, что если javascript отключен, URL-адреса должны возвращать разметку. Однако, если javascipt включен, должен ли запрос ajax к тому же URL-адресу возвращать те же разметки или он должен возвращать json и использовать javascript для анализа и создания разметки? - person goh; 05.06.2011
comment
Если JS отключен, конечно, URL-адреса должны указывать на правильные HTML-страницы. - person Matt Ball; 05.06.2011
comment
Если JS включен, и вы не хотите изменять URL-адрес, вам нужен какой-нибудь способ сообщить серверу, что это запрос ajax, и вам, очевидно, придется запрограммировать сервер для ответа соответственно с другим форматом вывода. Параметр запроса (например, /some/page.html?ajax=1) поможет. - person Matt Ball; 05.06.2011

Прогрессивное улучшение означает, что вы начинаете страницу с кода, который будет работать везде, а затем постепенно добавляете функциональность, приемлемую для браузера этого пользователя. Хороший пример этого - функциональность типа ajax с якорями. Когда страница загружается, вы можете использовать URL-адреса в hrefs, чтобы пауки и браузеры, не поддерживающие javascript, могли получать контент. Но вы также добавляете onclick, который выполняет загрузку ajax. Таким образом, как включенные, так и отключенные клиенты будут вести себя наилучшим образом.

person hivie7510    schedule 05.06.2011
comment
Это означает, что паук может перейти по ссылке, чтобы получить контент, а браузер с поддержкой javascript может использовать onclick для загрузки данных без полного обновления страницы. Оба пользовательских агента получают лучший опыт. - person hivie7510; 05.06.2011

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

Это сделано для того, чтобы позволить тем, у кого отключен Javascript, доступ к сайту и его использование в обычном режиме.

person mauris    schedule 05.06.2011