XMLHttpRequest
- это асинхронный запрос по умолчанию, означающий, что после вызова send
, следующая строка кода выполняется до того, как запрос завершится . Код, который должен быть выполнен после завершения запроса, переходит в ваш обработчик «изменения состояния». Вы уже назначаете обработчик изменения состояния здесь:
xmlHttp.onreadystatechange = handleRequestStateChange
Но вы никогда не определяете, что на самом деле является handleRequestStateChange
. Возможно, вам следует прочитать о состоянии готовности и событии onreadystatechange .
Попробуйте вместо этого следующий код:
<button type="button" onClick="handleButtonClick();">Click Me!</button>
<script type="text/javascript">
function handleButtonClick()
{
// Declare the variables we'll be using
var xmlHttp, handleRequestStateChange;
// Define the function to be called when our AJAX request's state changes:
handleRequestStateChange = function()
{
// Check to see if this state change was "request complete", and
// there was no server error (404 Not Found, 500 Server Error, etc)
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var substring=xmlHttp.responseText;
// Do something with the text here
alert(substring);
}
}
xmlhttp = new XMLHttpRequest();
xmlHttp.open("GET", "http://csce:8080/test/index.jsp?id=c6c684d9cc99476a7e7e853d77540ceb", true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
</script>
Этот код назначает handleRequestStateChange
функцию, которая будет вызываться при изменении состояния готовности XMLHttpRequest
. Функция проверяет, находится ли состояние готовности 4
(запрос завершен, а ответ готов) и, если это так, вы сможете получить доступ к свойству responseText запроса, который будет содержать ответ со страницы JSP.
В качестве предложения на будущее, когда вы узнали, как работает запрос AJAX, вы можете найти вспомогательную библиотеку, такую как jQuery , которая значительно упрощает такие задачи!