Используя ajax для вызова сервлета

Насколько я понимаю и использовали его, Ajax используется, чтобы выполнить запросы от клиента к серверу и затем обновить DIV HTML на клиенте с новым содержанием.

Однако я хочу использовать Ajax от клиента к сервлету для проверки существования URL. Если результат плох, я могу установить сообщение об ошибке в сервлете и возвратить его клиентской странице для дисплея.

Но кто-либо знает, может ли в случае положительного результата у меня быть свой сервлет, автоматически отображают другого (следующее) страница пользователю? Или если тот запрос инициирован JavaScript на клиенте, когда положительные результаты получены.

Спасибо

Г-н Morgan.

1
задан Mr Morgan 13 July 2010 в 11:35
поделиться

4 ответа

Поскольку ваш вызов ajax выполняется в фоне , результат, возвращаемый сервлетом, возвращается к вызову ajax, который затем должен действовать в соответствии с результатом. например вызвать отображение другой страницы. (Что могло быть уже в ответе ajax, а затем вы можете показать его в div, iframe или ...)

1
ответ дан 2 September 2019 в 23:06
поделиться

В соответствии со спецификацией W3 , XMLHttpRequest заставляет веб-браузер перейти в новое место, когда сервер возвращает полноценное перенаправление 301/302 и Соблюдается та же политика происхождения нового запроса. Однако это не работает в некоторых браузерах, например, в определенных версиях Google Chrome.

Для достижения наилучшего результата кроссбраузерности, даже если перенаправленный URL-адрес не соответствует правилам Same Origin Policy , вы хотели бы вместо этого изменить местоположение на стороне JavaScript. В конечном итоге вы можете позволить сервлету отправлять статус и новый желаемый URL-адрес. Например.

Map<String, Object> map = new HashMap<String, Object>();
map.put("redirect", true);
map.put("location", "http://stackoverflow.com");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
resposne.getWriter().write(new Gson().toJson(map));

(этот Gson , кстати, Google Gson , который упрощает преобразование объектов Java в JSON)

, а затем в обработчике обратного вызова Ajax в JS:

if (response.redirect) {
    window.location = response.location;
}
1
ответ дан 2 September 2019 в 23:06
поделиться

При успешном обратном вызове (на клиенте) установите self.location.href на новый URL.

0
ответ дан 2 September 2019 в 23:06
поделиться

HTML - это технология «вытягивания»: в браузере не отображается ничего, что браузер ранее не запрашивал у сервера.

Следовательно, у вас нет возможности «заставить сервлет автоматически отображать другую страницу». Вы должны заставить свой браузер (из JavaScript) запросить другую страницу.

0
ответ дан 2 September 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: