Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.08.2014, 22:23
Новичок на форуме
Отправить личное сообщение для antananarivu Посмотреть профиль Найти все сообщения от antananarivu
 
Регистрация: 25.08.2014
Сообщений: 7

Имеет ли значение асинхронность для возврата значения, если да - то как решить вопрос
Новичок, столкнулся с проблемой, не получается поместить результат выполнения функции в переменную. Не могу понять - это проблема моего синтаксиса (но ошибок не выдает) или какие-то заморочки конкретно языка. Код следующий

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()
{ 
   var req = createInstance();
   req.onreadystatechange = function()
   { 
      if(req.readyState == 4)
      {
         if(req.status == 200)
         {
           var but = req.responseText;
          // console.log(but);
           return but;

         }	
         else	
         {
            alert("Error: returned status code " + req.status + " " + req.statusText);
         }	
      } 
   }; 
   req.open("GET", "op21.php", true); 
   req.send(null); 
 } 
 
 
 
var myVar= submitForm();
      

console.log(myVar);


в результате - undefined
Ответить с цитированием
  #2 (permalink)  
Старый 25.08.2014, 23:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,436

Сообщение от antananarivu
в результате - undefined
Ответ еще не пришел...
Ответить с цитированием
  #3 (permalink)  
Старый 25.08.2014, 23:45
Новичок на форуме
Отправить личное сообщение для antananarivu Посмотреть профиль Найти все сообщения от antananarivu
 
Регистрация: 25.08.2014
Сообщений: 7

подскажите, пожалуйста, каким образом решить проблему, если выполнять функцию отдельно без помещения ее результата в новую переменную - все выполняется.
Ответить с цитированием
  #4 (permalink)  
Старый 25.08.2014, 23:56
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,036

Сообщение от antananarivu Посмотреть сообщение
выполнять функцию отдельно без помещения ее результата в новую переменную - все выполняется.
вот и ответ.

Работа с асинхроннотью основана на колбэках.
Выполнился асинхронный вызов - запустил колбэк функцию которой передал результат итд.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2014, 00:10
Новичок на форуме
Отправить личное сообщение для antananarivu Посмотреть профиль Найти все сообщения от antananarivu
 
Регистрация: 25.08.2014
Сообщений: 7

Сообщение от Aetae Посмотреть сообщение
вот и ответ.

Работа с асинхроннотью основана на колбэках.
Выполнился асинхронный вызов - запустил колбэк функцию которой передал результат итд.
Вы могли бы поправить мой код, так чтобы в var myVar поместился финальный результат выполнения функции submitForm();

А то я чисто теоретически понимаю что и как, а вот как получить результат "с асинхронностью" - не могу написать через код. Я написал, что новичок. В коде вместо op21.php можно подставить свой урл обработки асинхронного вызова - не суть важно.
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2014, 00:12
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

повторенье - му

часто задаваемые вопросы кто-нибудь читает?
нет, потому что их много

Сообщение от antananarivu
Msxml2.XMLHTTP
кто-нибудь поддерживает ie<7?

Сообщение от antananarivu
каким образом решить проблему
польза в чём? в ответе
ответ приходит куда?
следовательно, где его нужно использовать?
а если он куда-то не приходит, нужно ли его там использовать? будет ли от него там польза?
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2014, 00:45
Новичок на форуме
Отправить личное сообщение для antananarivu Посмотреть профиль Найти все сообщения от antananarivu
 
Регистрация: 25.08.2014
Сообщений: 7

Называется спросил на свою голову. Вместо того, чтобы элементарно объяснить в чем особенность асинхронного вызова и подсказать по коду как правильно оформить этот колбек, мне начинают рассказывать про то, что нужно чаво читать (который вместо классического вопрос - ответ является собой простыню чата) и задают типа наводящие вопросы совершенного мутного характера. Ребята, я перед тем как на форум придти гугл пошерстил, страницы посвященные аяксу прочитал. Я знаю как вернуть синхронный запрос, но в данном случае мне это не подходит. Я понимаю, что нужно вызвать обратную функцию в момент, когда в переменной появится ResponseText но я не понимаю как это оформить через код. Нужен пример. Вы тут на элементарные задачи отвечаете по пять вариантов четкого и простого кода, а тут на задачу, по которой особо и ответов не найти в гугле начинаете задавать какие-то мутные вопросы.
Ответить с цитированием
  #8 (permalink)  
Старый 26.08.2014, 02:19
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

antananarivu, такую х**ню пишешь. Возвращайся к гуглению: поисковики пока на х** не шлют!
Ответить с цитированием
  #9 (permalink)  
Старый 26.08.2014, 02:44
Новичок на форуме
Отправить личное сообщение для antananarivu Посмотреть профиль Найти все сообщения от antananarivu
 
Регистрация: 25.08.2014
Сообщений: 7

самое главное по сути ответил. Профессор, йопт, 1400 сообщений. мандаринки в магазине тоже, видимо, выбираешь по полчаса задавая наводящие глубокомысленные вопросы о методах их выращивания.
Ответить с цитированием
  #10 (permalink)  
Старый 26.08.2014, 03:12
Новичок на форуме
Отправить личное сообщение для antananarivu Посмотреть профиль Найти все сообщения от antananarivu
 
Регистрация: 25.08.2014
Сообщений: 7

еще раз пишу - индивидуумы, у которых развился профессиональный кретинизм, проходите мимо. На любом форуме таких персонажей пруд пруди, не нравятся вопросы - не сидите на форумах, вас за язык никто не тянет и отвечать не заставляет. Нервируют нубские вопросы - выключите компьютер и подышите свежим воздухом, хотя бы раз в неделю и все пройдет.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 12:29
Как найти нужный элемент страницы и кликнуть если он имеет тока класс... Александр_1997 Events/DOM/Window 3 18.01.2014 13: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