У меня было следующее:Вызов сервлет после функции яваскрипта убивает сеанс
<a href="/servlet/MyServlet" onclick="javascript:CreatePageView();"> Link 1 </a>
, но я заметил, что Javascript функция CreatePageView() не начал выполняться все время и создавая ситуацию гонки. Иногда javascript запускался, другие - сначала перенаправление.
Так что я хотел контролировать порядок событий и думал, чтобы вызвать сервлет в моей функции javascript.
function CreatePageView()
{
//Execute javascript function here
//Invoke servlet here
document.forms[0].action = "/servlet/MyServlet";
document.forms[0].submit();
}
Когда я вызываю свой сервлет, мой сеанс разрушается, и я перенаправляюсь на страницу входа. Может ли кто-нибудь объяснить, почему это происходит? Или, возможно, предложите альтернативный метод вызова сервлета, не убивая сеанс? Заранее спасибо.
Привет, спасибо за ответы и разъяснения. Я понимаю все в вашем примере кода, за исключением последних трех строк. Я заменил бы http: // example.com своим URL-адресом сервлета? – Keefu
Тот же URL-адрес, что и асинхронно вызывается внутри вашей функции. Вы не отображали весь элемент функции CreatePageView(), поэтому я просто привел пример. Или вы не запускаете асинхронный запрос в своей функции вообще? – BalusC
Проблема заключается в том, что функция javascript, которую я вызываю, является сторонней библиотекой, используемой для веб-аналитики (фиксируя количество кликов по ссылке), поэтому я не уверен, что она запускает асинхронный запрос или нет. Из-за ситуации в гонке, я бы предположил, что это асинхронный запрос. Могу ли я использовать этот метод для вызова функции с помощью xhr.open()? – Keefu