Javascript.RU

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

Не записывается переменная
function getstatus(idstatus){
	var x;
	
	$.ajax({
		url: "php/getstatus.php",
		type: "GET",
		dataType: "text",
		data: { status:idstatus },
		success: function(text){
			x = text;			
		}
	});
	return x;
}

Вот такая функция есть. Её проблема в том, что в x не записывается значение text, при выводе переменная выходит со значением undefined почему-то. С самим PHP скриптом все в норме, я вставлял alert(text) в success - выводит то, что нужно. Но почему-то не записывает оно это значение в x и все тут. Плиз хелп. Чувствую, что тут какая-то базовая ошибка, но не знаю какая.
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2015, 23:55
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

читай про асинхронность. тут такие темы каждый день по нескольку штук появляются.
Ответить с цитированием
  #3 (permalink)  
Старый 08.08.2015, 00:10
Интересующийся
Отправить личное сообщение для scorpion95 Посмотреть профиль Найти все сообщения от scorpion95
 
Регистрация: 01.08.2015
Сообщений: 24

Сообщение от javaQest Посмотреть сообщение
читай про асинхронность. тут такие темы каждый день по нескольку штук появляются.
А как обычно эту проблему решают? Есть ли возможность синхронно вызывать функции?
Ответить с цитированием
  #4 (permalink)  
Старый 08.08.2015, 00:33
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Сообщение от scorpion95
А как обычно эту проблему решают?
это не проблема, просто код кривой.
Сообщение от scorpion95
Есть ли возможность синхронно вызывать функции?
Есть синхронный аякс. Он крайне не рекомендован. Есть возможность синхронизировать асинхронные вызова. Смотри в сторону promises. Либо писать код на колбеках. В твоем случае что-то вроде
function getstatus(idstatus, onResponse){
   
    $.ajax({
        url: "php/getstatus.php",
        type: "GET",
        dataType: "text",
        data: { status:idstatus },
        success: function(text){
            onResponse(text);          
        }
    });
}

это проще всего, для начала. С промайсами примерно так:
function getstatus(idstatus){
   return new Promise(function(resolve, reject){
     $.ajax({
        url: "php/getstatus.php",
        type: "GET",
        dataType: "text",
        data: { status:idstatus },
        success: function(text){
            resolve(text);          
        }
    });
 })
}

getstatus(foo).then(function(data){do smth with data})

если есть ошибка, обрабатывается reject и ловиться catch

вкратце

Гугли подробности

Последний раз редактировалось javaQest, 08.08.2015 в 01:48.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная и select Navilsor Элементы интерфейса 17 23.01.2015 09:28
Имя массива, как строковая переменная, при обращении bugiman Элементы интерфейса 4 18.11.2013 15:44
.trigger() и глобальная переменная madicom jQuery 1 25.12.2011 17:53
Переменная после отправки данных lukingnu AJAX и COMET 0 19.03.2011 20:24
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45