Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Помогите с функцией JavaScript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер.
Помогите разобраться, написал функцию:

Код:
 
function getcars(){
   var i_free = 0;
   $.ajax({
      type: 'POST',
      url: 'services/taxionmaps/db.php',
      data:     {coordinates: 70000001},
      dataType: 'json',
      cache: false,
      success: function(data){
         $.each(data, function(key, val){
            if (val.id_status == 3){
               i_free = i_free + 1;
            };
         });
         return i_free;
      }
   });
}
 

Возвращает undefined, но если на место return воткнуть alert(i_free) получим искомый результат.
 
Подскажите, что не так в этой функции???

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 16:23 10-12-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
Подумайте куда вы это значение возвращаете и какой ожидаете результат.
И есть тема по is, что вы постоянно новые создаете?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 16:45 10-12-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну давайте return пропишем после ajax, получим 0. Почему переменной i_free не присваивается значение полученной AJAX запросом?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 18:32 10-12-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
Потому, что обработка ajax идёт асинхронно.
На момент выполнения кода в success интерпретатор JavaScript давно уже вышел из функции getcars

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 18:40 10-12-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ок. Но  даже при async: false получаю undefined

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 01:54 11-12-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Но  даже при async: false  

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:02 11-12-2014 | Исправлено: Mavrikii, 02:03 11-12-2014
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, так и сделал...
Тема закрыта.

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 11:43 11-12-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Помогите с функцией JavaScript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru