Ответ 1
Несколько способов:
-
Используйте
window.location
для запуска запроса GET. Предостережение заключается в том, что он синхронный (поэтому клиент увидит, что текущая страница будет изменена).window.location = "http://example.com/servlet?key=" + encodeURIComponent(key);
Обратите внимание на важность встроенной функции
encodeURIComponent()
для кодирования параметров запроса перед ее передачей. -
Используйте
form.submit()
для запуска запроса GET или POST. Оговорка также заключается в том, что она синхронна.document.formname.key.value = key; document.formname.submit();
С
<form name="formname" action="servlet" method="post"> <input type="hidden" name="key"> </form>
В качестве альтернативы вы также можете установить только скрытое поле существующей формы и просто подождать, пока пользователь ее отправит.
-
Используйте
XMLHttpRequest#send()
для запуска асинхронного запроса в фоновом режиме (также известного как Ajax). Ниже приведен пример сервлета sdoGet()
.var xhr = new XMLHttpRequest(); xhr.open("GET", "http://example.com/servlet?key=" + encodeURIComponent(key)); xhr.send(null);
Ниже приведен пример сервлета s
doPost()
.var xhr = new XMLHttpRequest(); xhr.open("POST", "http://example.com/servlet"); xhr.send("key=" + encodeURIComponent(key));
-
Используйте jQuery для отправки совместимого с Crossbrowser запроса Ajax (выше
xhr
код работает только в реальных браузерах, для Совместимость MSIE, вам нужно добавить некоторый беспорядок;)).$.get("http://example.com/servlet", { "key": key });
Обратите внимание, что jQuery уже прозрачно кодирует параметры запроса сам по себе, поэтому вам здесь не нужно
encodeURIComponent()
.
В любом случае, key
будет доступен только request.getParameter("key")
в сервлете.