Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Присвоение значения переменной 
:(
    Опции темы
Evgen24
Дата 11.1.2013, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 31.7.2007
Где: Россия

Репутация: нет
Всего: нет



Не могу понять как присвоить глобальной переменной в функции аякс запроса:

Код


var move_item_x = -1;

.......

$.ajax({
        type: "POST",
        url: "battle_func.php",
        data: {b_item: 4},
        dataType: 'json',
        success: function(data)
        {
            move_item_x = data.ship_x;
            move_item_y = data.ship_y;
            alert(data.ship_x);
        }
        });    
    
        alert(move_item_x);    


вот первый алерт выдает: 2 
а второй -1  

как добиться чтобы все же значение 2 присвоилось?
PM MAIL ICQ   Вверх
Amphiluke
Дата 11.1.2013, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Непонятно, что вас не устраивает. В ф-ции success значение и так присваивается глобальной переменной, раз вы утверждаете, что 
Цитата(Evgen24 @  12.1.2013,  00:20 Найти цитируемый пост)
алерт выдает: 2 


До успешного завершения AJAX-запроса move_item_x будет равно -1, это и понятно, ведь вы делаете асинхронный запрос.
PM   Вверх
Evgen24
Дата 11.1.2013, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 31.7.2007
Где: Россия

Репутация: нет
Всего: нет



да, но 2 алерт стоит после запроса и выдает -1, в дальнейших вычмслениях тоже -1 используется, как добиться чтобы было значение с аякс запроса?
PM MAIL ICQ   Вверх
Amphiluke
Дата 11.1.2013, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Еще раз: запрос асинхронный. Следовательно, программа не ожидает завершения запроса, и продолжает выполнение сразу после вызова $.ajax. Ф-ция success будет вызвана уже позже, когда будет получен успешный результат от серверного скрипта. Если вам нужно выполнять какие-то действия после получения ответа сервера, выполняйте их из ф-ции success:

Код

function do_something_immediately_after_the_server_says_ok() {
    alert(move_item_x);  
}
$.ajax({
        type: "POST",
        url: "battle_func.php",
        data: {b_item: 4},
        dataType: 'json',
        success: function(data)
        {
            move_item_x = data.ship_x;
            move_item_y = data.ship_y;
            do_something_immediately_after_the_server_says_ok();
            alert(data.ship_x);
        }
        });

PM   Вверх
Evgen24
Дата 11.1.2013, 21:31 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 31.7.2007
Где: Россия

Репутация: нет
Всего: нет



исправил запрос на синхроный:

Код

$.ajax({
        type: "POST",
        url: "battle_func.php",
        data: {b_item: 4},
        dataType: 'json',
        async: false,
        success: function(data)
        {
            var move_item_x = data.ship_x;
            var move_item_y = data.ship_y;
            alert(data.ship_x);
        }
        });    
    
        alert(move_item_x);    


 без изменений
PM MAIL ICQ   Вверх
Amphiluke
Дата 11.1.2013, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Теперь вы зачем-то сделали переменную move_item_x локальной. Ясное дело, что вне ф-ции success она не видна.
PM   Вверх
Evgen24
Дата 11.1.2013, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 31.7.2007
Где: Россия

Репутация: нет
Всего: нет



спасибо, заработало
PM MAIL ICQ   Вверх
skyboy
Дата 11.1.2013, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Цитата(Evgen24 @  11.1.2013,  20:31 Найти цитируемый пост)
исправил запрос на синхроный:

не надо бояться ассинхронности.
при не быстром интернете, синхронный запрос завесит браузер.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0651 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.