Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Firebug показывает статус 200, а скрипт нет :(


Автор: animegirl 27.7.2011, 19:53
Скрипт:
Код

func_ajaxgetdata = function(url,backform)
    {
    try
        {
        ajax = new XMLHttpRequest();
        }
    catch(e)
        {
        try
            {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
            }
        catch(e)
            {
            try
                {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
                }
            catch(e)
                {
                alert("Your browser broke!");
                return false;
                }
            }
        }
    
    if(ajax)
        {
        ajax.open("GET", url, true);
        ajax.onreadystatechange = ajaxanswer;
        ajax.send(null);
        }
    
    function ajaxanswer()
        {
        try
            {
            if (ajax.readyState == 4)
                {
                if (ajax.status == 200)
                    {
                    switch(backform)
                        {
                        case  1:
                            {
                            return ajax.responseText;
                            break;
                            }
                        case  2:
                            {
                            return ajax.responseXML;
                            break;
                            }
                        case  3:
                            {
                            return ajax.responseText;
                            break;
                            }
                        }
                    }
                else
                    {
                    alert("Не удалось получить данные:\n" + ajax.statusText);
                    }
                }
            }
        catch(e)
            {
            // alert('Caught Exception: ' + e.description);
            // В связи с багом XMLHttpRequest в Firefox приходится отлавливать ошибку
            // Bugzilla Bug 238559 XMLHttpRequest needs a way to report networking errors
            // https://bugzilla.mozilla.org/show_bug.cgi?id=238559
            }
        }



Запуск:
Код

<div onclick="func_ajaxgetdata('http://vingrad.ru',1);">check</div>


Скрин в атаче

В опере тоже самое, где косяк не пойму, вроде всё верно переписала с примеров  smile 

Автор: animegirl 28.7.2011, 01:06
attach

Автор: IDVsbruck 28.7.2011, 19:17
1. У тебя домен свой, а ты пытаешься получить данные с "http://vingrad.ru"? - Если это так, то сделать тебе это не удастся - кроссдоменные запросы для динамических запросов запрещены. Почему файербаг показывает 200 - не знаю, это неважно.
2. Что мешает увидеть ajax.status? - Будешь знать реальный статус и определишься откуда ноги ростут.
3. Практика показывает, что объект типа XMLHttpRequest удобно создавать изначально и разово, используя глобальную переменную, а потом многократно использовать в коде.

P.S. Такое количество фигурных скобок для показа - это перебор ... кода с гулькин нос, а размер огромный.
P.P.S. Для case в конструкциях switch .. case фигурные скобки не нужны - он работает либо для break, либо до окончания конструкции switch.
P.P.P.S. Раз вопрос не в разделе новичков, а в общем, то это подразумевает некоторый опыт работы с js. Поэтому я советовал бы для динамических запросов использовать фреймворки - быстро, удобно, надежно и позволяет избегать множества ошибок. Хотя знать принципы работы надо.

Автор: animegirl 28.7.2011, 19:37
Фраймворки запрещены.
Проблему кроссдоменности решили через JsonP

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)