Javascript.RU

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

Вопрос по коду
Коллеги добрый день.

Прошу прощения за нубский вопрос, но уже голову сломал.

есть на странице такая функция.

function getOwnCnt(nomenklatura_n)	{
		$.ajax({
		type: "POST",
		url: "./includes/get_own_cnt.php",
		data: "nomenklatura_n="+nomenklatura_n,
		success: function (data)	{
			return data;
			}
		});
	}

var test = getOwnCnt(1061037);
alert(test);

так вот последняя команда alert выдает undefined...
если вместо return data; делаю alert(data); все отображает правильно.

Прошу указать мою ошибку...
Ответить с цитированием
  #2 (permalink)  
Старый 21.09.2013, 19:26
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

надо так
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
function getOwnCnt(nomenklatura_n)  {
        var DATA;
        $.ajax({
        type: "POST",
        url: "./includes/get_own_cnt.php",
        data: "nomenklatura_n="+nomenklatura_n,
        success: function (data)    {
            DATA = data;
            return data;
            }
        });
        return DATA;
    }
 
var test = getOwnCnt(1061037);
alert(test);
Ответить с цитированием
  #3 (permalink)  
Старый 21.09.2013, 19:27
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Dim@, опередил, да-да, всё дело в отсутствии return непосредственно в теле ajax()
Ответить с цитированием
  #4 (permalink)  
Старый 21.09.2013, 19:37
Новичок на форуме
Отправить личное сообщение для ramko Посмотреть профиль Найти все сообщения от ramko
 
Регистрация: 14.09.2013
Сообщений: 7

function getOwnCnt(nomenklatura_n)  {
        var DATA;
		nomenklatura_n = 1061036;
        $.ajax({
        type: "POST",
        url: "./includes/get_own_cnt.php",
        data: "nomenklatura_n="+nomenklatura_n,
        success: function (data)    {
            DATA = data;
			//alert (data); // здесь все правильно отображает
            return data;
            }
        });
		alert (DATA); // здесь также падает undefined
        return DATA;
		
    }
Ответить с цитированием
  #5 (permalink)  
Старый 21.09.2013, 19:47
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от ramko
здесь также падает undefined
setTimeout надо добавить
Ответить с цитированием
  #6 (permalink)  
Старый 21.09.2013, 19:56
Новичок на форуме
Отправить личное сообщение для ramko Посмотреть профиль Найти все сообщения от ramko
 
Регистрация: 14.09.2013
Сообщений: 7

Сообщение от bes Посмотреть сообщение
setTimeout надо добавить
Можете подсказать для чего он тут?
В моем понимании если по ходу функции, уже есть правильный ответ он и дальше должен передаваться.
Ответить с цитированием
  #7 (permalink)  
Старый 21.09.2013, 20:02
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от ramko
Можете подсказать для чего он тут?
В моем понимании если по ходу функции, уже есть правильный ответ он и дальше должен передаваться.
в твоём понимании, ты не добавил return непосредственно в тело функции, поэтому передаваться было нечему
смысл заключён в названии технологии


рабочий код
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
(function getOwnCnt(nomenklatura_n)  {
        var DATA;
		nomenklatura_n = 1061036;
        $.ajax({
        type: "POST",
        url: "http://lookatcode.com",
        data: "nomenklatura_n="+nomenklatura_n,
        success: function (data)    {
            DATA = data;
			//alert (data); // здесь все правильно отображает
            return data;
            }
        });
		setTimeout(function () {alert (DATA)}, 2000);
        return DATA;
		
    })();
</script>

Последний раз редактировалось bes, 21.09.2013 в 20:04.
Ответить с цитированием
  #8 (permalink)  
Старый 21.09.2013, 20:18
Новичок на форуме
Отправить личное сообщение для ramko Посмотреть профиль Найти все сообщения от ramko
 
Регистрация: 14.09.2013
Сообщений: 7

Спасибо, работает. Насколько я понял просто функция продолжила выполняться, а когда пришел ответ уже все строки были выполнены.
Ответить с цитированием
  #9 (permalink)  
Старый 21.09.2013, 20:27
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от ramko
Спасибо, работает. Насколько я понял просто функция продолжила выполняться, а когда пришел ответ уже все строки были выполнены.
правильно, теперь тебе осталось только выложить рабочий код с передачей ответа во внешний alert() без setTimeout
возможность запуска [html run]
Ответить с цитированием
  #10 (permalink)  
Старый 21.09.2013, 21:07
Новичок на форуме
Отправить личное сообщение для ramko Посмотреть профиль Найти все сообщения от ramko
 
Регистрация: 14.09.2013
Сообщений: 7

мне удобнее получить ответ через return от функции и дальше его обрабатывать, алерт был нужен только для проверки.
Если я перед финальным return делаю
while (typeof cnt == "undefined")	{
} // получаю бесконечный цикл

как в такой ситуации выкрутиться ? решение с таймером неудобное.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
Вопрос по чужому коду popov654 Общие вопросы Javascript 1 06.09.2011 01:49
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49