Моя первая проблема - когда они удаляют XMLHttpRequestObject, а затем, после его предположительного удаления, они устанавливают его равным нулю.
Не знаю, почему они это делают. Установка null
мне кажется достаточной, но, возможно, это решает некоторую неясную причуду браузера.
Затем после того, как он предположительно удален и установлен в нуль, они используют XMLHttpRequestObject.send (null);
нет. удаление происходит внутри обработчика событий - эта функция обработчика событий не вызывается до тех пор, пока не будет выполнен запрос, и состояние объекта xhr не изменится, например, из-за того, что сервер отправил ответ, или произошла ошибка при обмене данными.
По сути, вызывающая последовательность отличается от последовательности объявления . Последовательность вызова:
XMLHttpRequestObject.open(“GET”, dataSource);
... //assign event handler so it can be called later on
XMLHttpRequestObject.send(null);
... //request send, program continues
//separate context here, goes off when the readystate of the xhr changes
//due to server response or error:
function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
document.getElementById(“targetDiv”).innerHTML = XMLHttpRequestObject.responseText;
delete XMLHttpRequestObject;
XMLHttpRequestObject = null;
}
}