Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2014, 05:07
Интересующийся
Отправить личное сообщение для xxnikolayxx Посмотреть профиль Найти все сообщения от xxnikolayxx
 
Регистрация: 08.09.2012
Сообщений: 11

function() {return ' '}
Доброго времени суток дорогие форумчане.
Осваиваю JS уже давно, но время от времени все равно вылазят непонятные ошибки.
Подскажите, что может быть не так?
Функция возвращает мне undefined, а должна бы строку.
function get_tech_name(id){
    <!-- Получение наименования типа техники -->
    $.ajax({
              type: 'GET',
              url: '/api/get_technique_type_name/',
              data: {id: id},
              success: function(data) {
                  if (data.code == '1'){
                      return data.data;

                  } else {
                      <!-- Ошибка обработки -->
                      return data.response;
                  }

              }
            });
}

А вот если поставить alert вместо return, то все в порядке...
В чем тайна?

P.S.(Строка, приходящая из url = \u0421\u0430\u043c\u043e\u0441\u0432\u0430\u043b)

Последний раз редактировалось xxnikolayxx, 07.07.2014 в 05:20.
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2014, 06:42
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

У вас функция get_tech_name ничего не возвращает, поэтому и undefined. return у вас стоит в функции-калбеке, которая выполнится когда аякс запрос будет выполнен, а на это требуется время. Аякс запрос выполняется асинхронно, т.е. функция get_tech_name не будет ждать пока выполнится запрос и будет завершена раньше чем будет вызван аяксовый калбек. Так что передавайте данные из калбека куда вам надо.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2014, 06:47
Интересующийся
Отправить личное сообщение для xxnikolayxx Посмотреть профиль Найти все сообщения от xxnikolayxx
 
Регистрация: 08.09.2012
Сообщений: 11

Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2014, 17:20
Интересующийся
Отправить личное сообщение для xxnikolayxx Посмотреть профиль Найти все сообщения от xxnikolayxx
 
Регистрация: 08.09.2012
Сообщений: 11

Собственно поправил функцию, чтобы она удовлетворяла требованиям.
function get_tech_name(id){
    <!-- Получение наименования типа техники -->
    var response = 'l';
    $.ajax({
              type: 'GET',
              url: '/api/get_technique_type_name/',
              async: false,
              data: ({id: id}),
              success: function(data) {
                  if (data.code == '1'){
                      response = data.data;

                  } else {
                      <!-- Ошибка отправки -->
                      response = data.response;
                  }

              }
            });
    return response;
}
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2014, 18:44
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от xxnikolayxx Посмотреть сообщение
Собственно поправил функцию, чтобы она удовлетворяла требованиям.
При синхронном запросе на время выполнения запроса страница повиснет, поэтому это не лучшее решение. Что мешает запускать из калбека код, который должен работать с результатом запроса?

P.S. Комментарии в JS коде пишутся не так...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция не реагирует инпут imedia Элементы интерфейса 9 22.05.2014 16:31
Как найти различие между двумя массивами? Maxmaxmaximus4 Оффтопик 169 10.12.2013 16:43
Классы в javascript harmony. Mахmахmахimus Оффтопик 4 16.03.2012 12:17
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12
Помогите исправить скрипт по поиску в базе данных dok_sj2 Internet Explorer 2 29.06.2009 20:04