Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.08.2014, 04:59
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Сообщение от antananarivu Посмотреть сообщение
Вы могли бы поправить мой код, так чтобы в var myVar поместился финальный результат выполнения функции submitForm();
Нет.


function createInstance() {
    var req = null;
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                alert("XHR not created");
            }
        }
    }
    return req;
}

function submitForm(callback) {
    var req = createInstance();
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            if (req.status == 200) {
                var but = req.responseText;
                callback(but);
            } else {
                alert("Error: returned status code " + req.status + " " + req.statusText);
            }
        }
    };
    req.open("GET", "op21.php", true);
    req.send(null);
}

submitForm(callback);

function callback(myVar) {
    console.log(myVar);
}
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 26.08.2014, 10:33
Новичок на форуме
Отправить личное сообщение для antananarivu Посмотреть профиль Найти все сообщения от antananarivu
 
Регистрация: 25.08.2014
Сообщений: 7

Спасибо. Я видел это единственное решение, когда искал информацию по вопросу. А так получается, что все операции с myVar можно проводить только внутри function callback. По сути, точно также я мог быть продолжать проводить операции с переменной but внутри функции submitForm продолжая блок после if (req.status == 200)

Мне нужен результат выполнения функции submitForm использовать в других местах страницы в ряде других функций, собственно говоря поэтому я и хотел поместить результат в новую переменную, чтобы потом с ней работать.
Ответить с цитированием
  #13 (permalink)  
Старый 26.08.2014, 11:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Ну раз ты это понял, то теперь можно и открыть тебе грязную сторону javascript, о которой не принято говорить.
Если ты сделаешь так:
req.open("GET", "op21.php", false);
то запрос будет синхронным и страница намертво зависнет до тех пор пока не загрузится ответ от сервера, после чего продолжит выполнение кода. Таким образом можно быть уверенным, что данные в переменной будут на месте.

Помни: в приличном обществе за такой подход плюют в лицо.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как найти нужный элемент страницы и кликнуть если он имеет тока класс... Александр_1997 Events/DOM/Window 3 18.01.2014 14:34
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
как решить задачу с hover для IE6 Александр345 Internet Explorer 4 20.06.2011 10:29
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31