Помогите разобраться, у меня есть кусок кода для подключения через AJAX. Раньше работал, а сейчас никак..
Браузеры что ли обновились или проблемы на компьютере. Пишет "невозможно соединиться с сервером xmlHttp.Open is not a function." Пробывал в Mozilla firefox 3.0.7 и IE 7.0.5730.13
Есть идеи в чём может быть дело и как поправить?
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
try
{
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch(e){
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")
}
}
}
if (!xmlHttp)
alert("Ошибка создания объекта XMLHttpRequest.");
else
return xmlHttp;
}
function process()
{
if (xmlHttp)
{
try
{
xmlHttp.Open("GET","async.txt",true); Здесь стопариться...
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
catch(e)
{
alert("Невозможно соединиться с сервером:\n" + e.toString());
}
}
}
P.S. Может у вас есть более более универсальный код..
Как это вы присваиваете var xmlHttp = createXmlHttpRequestObject() до описания функции createXmlHttpRequestObject? В этот момент функция createXmlHttpRequestObject еще не существует. Поставьте присвоение после описания функции.
П>Как это вы присваиваете var xmlHttp = createXmlHttpRequestObject() до описания функции createXmlHttpRequestObject? В этот момент функция createXmlHttpRequestObject еще не существует. Поставьте присвоение после описания функции.
Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект... Код превосходно работал в т.ч. на IE 6, я подозреваю что проблемы связанны с обновлёнными браузерами... Запустил код через Windows Vista, та же проблема...
П>>Как это вы присваиваете var xmlHttp = createXmlHttpRequestObject() до описания функции createXmlHttpRequestObject? В этот момент функция createXmlHttpRequestObject еще не существует. Поставьте присвоение после описания функции.
Jyk>Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект... Код превосходно работал в т.ч. на IE 6, я подозреваю что проблемы связанны с обновлёнными браузерами... Запустил код через Windows Vista, та же проблема...
Зачем гадать, запустите отладчик js (студия или firebug)
Здравствуйте, Jyk, Вы писали:
Jyk>Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект...
Браузер телепатически догадывается, что при проверке if (xmlHttp) надо вызвать функцию createXmlHttpRequestObject? Код, который вы привели, работать не может. Возможно, он работал в сочетании с другим кодом, где эта функция была определена раньше.
Здравствуйте, Панда, Вы писали:
П>Здравствуйте, Jyk, Вы писали:
Jyk>>Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект...
П>Браузер телепатически догадывается, что при проверке if (xmlHttp) надо вызвать функцию createXmlHttpRequestObject? Код, который вы привели, работать не может. Возможно, он работал в сочетании с другим кодом, где эта функция была определена раньше.
Если вы думаете, что обращение к createXmlHttpRequestObject невозможно, попробуйте скопировать этот код и поставить alert в начеле этой функции. Функция срабатывает, а вот то что она в итоге подключает, неработает...
И вот, когда уже нашел другой код... выяснилось, что вся ошибка из-за прописанного xmlHttp.Open("GET","async.txt",true);
Всего то, надо было open написать с маленькой буквы!!!! Нет слов, кроме мата.. Сколько времени в пустую угрохал!