Использование ajax для вызова сервлета - PullRequest
1 голос
/ 13 июля 2010

Как я понимаю и использовал, AJAX используется для отправки запросов от клиента к серверу, а затем для обновления HTML DIV на клиенте новым контентом.

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

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

Спасибо

Мистер Морган.

Ответы [ 4 ]

1 голос
/ 13 июля 2010

В соответствии со спецификацией 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 голос
/ 13 июля 2010

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

0 голосов
/ 13 июля 2010

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

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

0 голосов
/ 13 июля 2010

В случае успешного обратного вызова (на клиенте) установите self.location.href для нового URL.

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