загрузить новую страницу, используя ajax - PullRequest
3 голосов
/ 04 декабря 2009

Я новичок в ajax, и я хотел знать, можем ли мы загрузить полностью новую страницу, а не только ее часть, используя ajax. Пожалуйста, приведите небольшой пример сценария для понимания, если это возможно. Здесь я пытаюсь отобразить только один URL-адрес для пользователя, когда я переключаюсь с одной страницы на другую, когда он нажимает на любую из ссылок на странице.

Ответы [ 5 ]

12 голосов
/ 04 декабря 2009

Вы, конечно, можете запросить новую страницу и загрузить ее через body.innerHTML = ajax.responseText;

Я настоятельно рекомендую против этого, хотя по причинам, изложенным в этом посте: Почему бы просто не использовать ajax для запросов страниц для загрузки содержимого страницы?

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

Но если вы используете AJAX для загрузки вся страница это на самом деле контрпродуктивным. Вы должны написать индивидуальные процедуры для решения обратный вызов данных AJAX. Это целое много дополнительной работы для мало, чтобы нет увеличение производительности.

Общее правило для использования AJAX: если ваше обновление> 50% вашей страницы, просто перезагрузите, иначе используйте AJAX.

Вам потребуется не только запросить новую страницу, но и позаботиться о том, чтобы старые стили на текущей странице были удалены и не мешали новой странице. Theres все виды проблем, связанных с тем, что вы пытаетесь сделать. Это возможно, но я рекомендую этого не делать.

edit: на самом деле вы могли бы просто сделать document.write(ajax.responseText), который должен позаботиться о перезаписи всего в документе, включая стили CSS и т. Д. Хотя все еще не рекомендую это.

1 голос
/ 18 сентября 2011

Когда вы закончите обработку запроса AJAX, просто используйте эту строку JS:

window.location.replace('<URL of the new page>');

Это дает эффект загрузки новой страницы через

<a href="<URL of the new page>">...</a>.
0 голосов
/ 03 декабря 2010

Это может быть полезно, если ваша страница была неуверенной, если она ожидала возврата ошибок на страницу или на «новую» страницу подтверждения отправки. Это может быть использовано, когда вы хотите поместить сервлет проверки (или что-то еще) перед сервлетом подачи (или что-то еще). Если страница всегда попадает в сервлет проверки, вы скрываете сервлет отправки, который фактически выполняет обновление данных. В случае, если проверка пройдена, перешлите к сервлету отправки. Пользователь никогда не знает, что произошло в фоновом режиме.

Когда страница получает ответ, вы можете просто просмотреть первую часть текста ответа и определить, было ли у него ключевое слово, установленное сервером, что означает, что это новая страница. Удалите ключевое слово из текста и сделайте document.write (ajax.responseText); как описано ранее. В противном случае вставьте текст ответа в свой блок errorBox и позвольте пользователю повторить попытку.

0 голосов
/ 04 декабря 2009

Если вы хотите показать один URL для нескольких страниц, AJAX - это излишне. Почему бы просто не использовать IFRAME?

0 голосов
/ 04 декабря 2009

Когда вы делаете запрос AJAX, запрос уходит и приносит вам содержимое запрошенного вами URL. Теперь технически вы можете делать с содержимым все, что вам нравится (например, HTML), вы можете заменить на него любой элемент в DOM. Однако будьте осторожны при замене ВСЕГО на странице, вы, скорее всего, просто захотите заменить то, что находится внутри тегов.

...