Я слежу за простой книгой, в которой написано:
function createRequest()
{
try
{
request = new XMLHttpRequest();
}
catch (tryMS)
{
try
{
request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (otherMS)
{
try
{
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed)
{
request = null;
}
}
}
return request;
}
function getDetails(itemName)
{
var request = createRequest();
if (request==null)
{ alert("Unable to create request");
return;
}
var url= "getDetails.php?ImageID=" + escape(itemName);
request.open("GET",url,true);
request.onreadystatechange = displayDetails;
request.send(null);
}
function displayDetails()
{
if (request.readyState == 4)
{
if (request.status == 200)
{
detailDiv = document.getElementById("description");
detailDiv.innerHTML = request.responseText;
}
}
}
И весь вышеприведенный код в порядке, и это нормально для меня ... но после нескольких страниц написано:
ЕГО ОЧЕНЬ ВАЖНО УДАЛИТЬ КЛЮЧ VAR ПЕРЕД запросом VARIABLE, чтобы обратный вызов мог ссылаться на переменную ...
но почему в приведенном выше примере это сработало?это совпадение, если мы назовем переменную 'request'
, которая будет отображаться с глобальной переменной в методе createRequest
?
Посмотрите на изображение ниже:
Почему это происходит?в одном примере var
до использования переменной request
и все в порядке, в другом примере var
избегается, чтобы метод в обратном вызове мог получить к нему доступ, но как получается, что метод в обратном вызове обращается к переменной request
вПервый пример ...
Это сбивает с толку, потому что есть 2 аналогичных примера с разными объяснениями ..
РЕДАКТИРОВАТЬ PS это говорит, что запрос должен быть глобальным?: o
Спасибо, ребята, Ура