Ajax глюкавит
От: Jyk Россия  
Дата: 11.03.09 18:27
Оценка:
Помогите разобраться, у меня есть кусок кода для подключения через 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. Может у вас есть более более универсальный код..
Re: Ajax глюкавит
От: Панда Россия  
Дата: 11.03.09 19:34
Оценка:
Jyk>
Jyk>var xmlHttp = createXmlHttpRequestObject();
Jyk>function createXmlHttpRequestObject()
Jyk>


Как это вы присваиваете var xmlHttp = createXmlHttpRequestObject() до описания функции createXmlHttpRequestObject? В этот момент функция createXmlHttpRequestObject еще не существует. Поставьте присвоение после описания функции.
Re[2]: Ajax глюкавит
От: Jyk Россия  
Дата: 11.03.09 19:51
Оценка:
Здравствуйте, Панда, Вы писали:

Jyk>>
Jyk>>var xmlHttp = createXmlHttpRequestObject();
Jyk>>function createXmlHttpRequestObject()
Jyk>>


П>Как это вы присваиваете var xmlHttp = createXmlHttpRequestObject() до описания функции createXmlHttpRequestObject? В этот момент функция createXmlHttpRequestObject еще не существует. Поставьте присвоение после описания функции.


Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект... Код превосходно работал в т.ч. на IE 6, я подозреваю что проблемы связанны с обновлёнными браузерами... Запустил код через Windows Vista, та же проблема...
Re[3]: Ajax глюкавит
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 12.03.09 05:21
Оценка:
Здравствуйте, Jyk, Вы писали:

Jyk>Здравствуйте, Панда, Вы писали:


Jyk>>>
Jyk>>>var xmlHttp = createXmlHttpRequestObject();
Jyk>>>function createXmlHttpRequestObject()
Jyk>>>


П>>Как это вы присваиваете var xmlHttp = createXmlHttpRequestObject() до описания функции createXmlHttpRequestObject? В этот момент функция createXmlHttpRequestObject еще не существует. Поставьте присвоение после описания функции.


Jyk>Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект... Код превосходно работал в т.ч. на IE 6, я подозреваю что проблемы связанны с обновлёнными браузерами... Запустил код через Windows Vista, та же проблема...


Зачем гадать, запустите отладчик js (студия или firebug)
Re[3]: Ajax глюкавит
От: Панда Россия  
Дата: 12.03.09 07:58
Оценка: 1 (1)
Здравствуйте, Jyk, Вы писали:

Jyk>Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект...


Браузер телепатически догадывается, что при проверке if (xmlHttp) надо вызвать функцию createXmlHttpRequestObject? Код, который вы привели, работать не может. Возможно, он работал в сочетании с другим кодом, где эта функция была определена раньше.
Re[4]: Ajax глюкавит
От: Jyk Россия  
Дата: 12.03.09 10:41
Оценка:
Здравствуйте, Панда, Вы писали:

П>Здравствуйте, Jyk, Вы писали:


Jyk>>Сначала вызывается функция "process", на строке "if (xmlHttp)" происходит вызов функции "createXmlHttpRequestObject" и создаётся объект...


П>Браузер телепатически догадывается, что при проверке if (xmlHttp) надо вызвать функцию createXmlHttpRequestObject? Код, который вы привели, работать не может. Возможно, он работал в сочетании с другим кодом, где эта функция была определена раньше.


Если вы думаете, что обращение к createXmlHttpRequestObject невозможно, попробуйте скопировать этот код и поставить alert в начеле этой функции. Функция срабатывает, а вот то что она в итоге подключает, неработает...

И вот, когда уже нашел другой код... выяснилось, что вся ошибка из-за прописанного xmlHttp.Open("GET","async.txt",true);
Всего то, надо было open написать с маленькой буквы!!!! Нет слов, кроме мата.. Сколько времени в пустую угрохал!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.