Javascript.RU

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

ajax и функция "возврата"
Всем здрасте.
Вот функция...
function num(){
  var name = 'Олег';
  var res = true;

   if(res == true){
     $ajax({
       url: "num.php",
       type: "POST",
       data: {'name': name},
       success: function(obj){            
                if(obj == true){
                   res = false;
                }  
             }
     });
   }
 alert(res);
}

Alert выводит - true!? А, надо бы - false.
Есть ли какая приблуда в Аяксе, чобы это сделать?
Или правильное решение.
Я думаю пока над этим.)
function num(){
  var name = 'Олег';
  var res = true;

   if(res == true){
     $ajax({
       url: "num.php",
       type: "POST",
       data: {'name': name},
       success: function(obj){            
                if(obj == true){
                 var res_valid = false;
                 change_valid(res_valid);
                }  
             }
     });
   }
var res_change_valid = change_valid();
 alert(res_change_valid);
}

function change_valid(obj){
  var res;
    if(obj == false){
       res = false; 
    }
    else{
       res = true
    }
  return res; 
}

Но это пока не работает.
alert выводит true!?

Последний раз редактировалось Ljubin, 29.09.2014 в 03:05.
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2014, 08:21
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Для начала - если уж ты используешь переменную Res как флаг, то возможно не стоит объявлять ее как локальную.
Во вторых ты сравниваешь строку с true, и всегда будешь получать false.
Если хочешь проверить на наличие ответа то
if(obj) {...}
//или
if(obj > '') {...}

Хотя это не лучший способ = лучше придумать что то вроде
if (obj.status == 'ok') {
res = false;
}
//естественно используя json
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2014, 15:56
Интересующийся
Отправить личное сообщение для Ljubin Посмотреть профиль Найти все сообщения от Ljubin
 
Регистрация: 18.12.2013
Сообщений: 11

Условие
if(obj == false)
// я поменял пока на 
if(obj)

json мне не подходит. Но это не суть...
Я уточню...
В этой строке должно быть так
url: "num.php/order",

Тоесть ajax обращается к контроллеру num.php и в нём к функции order
которая возвращает в ajax, true или false.
Задача в том чтобы перемення res = true
в функции возврата - ajax стала res = false
И уже со значением false использовалась дальше в функции num, в которой и размещён собственно ajax запрос.

p/s Моё решение - которое выше и над которым я думал - не годится.)

Последний раз редактировалось Ljubin, 29.09.2014 в 15:59.
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2014, 16:22
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,126

Событие в JS вызываются асинхронно
т.е. на момент когда вызывается success: function (т.е. приходит ответ от сервера) alert уже произошел.

т.е. сначала вызывается alert(res);
и только после этого в будущем наступит событие и придет ответ от сервера
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2014, 00:39
Интересующийся
Отправить личное сообщение для Ljubin Посмотреть профиль Найти все сообщения от Ljubin
 
Регистрация: 18.12.2013
Сообщений: 11

Тоесть, выход только
async: false, //Синхронный запрос
Ответить с цитированием
  #6 (permalink)  
Старый 01.10.2014, 07:54
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Во первых посмотри что вообще приходит от сервера. Может там шиш с маслом. Пользуйся консолью.
И все операции которые должны пройти непосредственно после запроса и используя данные запроса должны выполняться в коллбеке success.
Ответить с цитированием
  #7 (permalink)  
Старый 03.10.2014, 00:52
Интересующийся
Отправить личное сообщение для Ljubin Посмотреть профиль Найти все сообщения от Ljubin
 
Регистрация: 18.12.2013
Сообщений: 11

Сообщение от krasovsky Посмотреть сообщение
Во первых посмотри что вообще приходит от сервера. Может там шиш с маслом.
Нет, нет...С сервера всё приходит. Проблема(в данной ситуации) именно в асинхронной связи аякса с сервером, как описал её MallSerg - выше.
А, так как использовать ajax для синхронных запросов "подвешивая" браузер клиента "не кошерно", то пока повышаю уровень своих знаний, в надежде со временем решить эту задачу.))
Ответить с цитированием
  #8 (permalink)  
Старый 03.10.2014, 01:27
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Ljubin,
Цитата:
Тоесть, выход только
async: false, //Синхронный запрос
Не обязательно. Вызываешь алерт прямо в коллбэке, после if.
Ответить с цитированием
  #9 (permalink)  
Старый 03.10.2014, 08:40
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от Ljubin
в надежде со временем решить эту задачу
Ты отдаешь себе отчет в том что ты уже написал ОТДЕЛЬНУЮ функцию чтобы переключить false в true и еще дальше ищешь какую то приблуду?
Повышать знания надо, как раз для того чтоб не писать подобной хрени
Ответить с цитированием
  #10 (permalink)  
Старый 04.10.2014, 00:47
Интересующийся
Отправить личное сообщение для Ljubin Посмотреть профиль Найти все сообщения от Ljubin
 
Регистрация: 18.12.2013
Сообщений: 11

Сообщение от krasovsky Посмотреть сообщение
Ты отдаешь себе отчет в том что ты уже написал ОТДЕЛЬНУЮ функцию чтобы переключить false в true и еще дальше ищешь какую то приблуду?
Повышать знания надо, как раз для того чтоб не писать подобной хрени
Господин професор, или ты читаеш коменты, вникая в тему и потом делаем свой высер, или же сразу идёш на хуй!

Последний раз редактировалось Ljubin, 04.10.2014 в 00:49.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX функция для новых html-элементов broadcast77 AJAX и COMET 25 03.03.2014 14:01
Ajax есть стандартная функция Alex_dark74 Элементы интерфейса 1 01.09.2013 20:06
Ajax и Json callback функция borabora Prototype & script.aculo.us 0 30.01.2012 15:01
AJAX. Функция click() по динамическому объекту max161616 AJAX и COMET 3 06.11.2011 17:07
Универсальная функция Ajax запроса Finesse AJAX и COMET 21 15.06.2011 17:17