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!? |
Для начала - если уж ты используешь переменную Res как флаг, то возможно не стоит объявлять ее как локальную.
Во вторых ты сравниваешь строку с true, и всегда будешь получать false. Если хочешь проверить на наличие ответа то if(obj) {...} //или if(obj > '') {...} Хотя это не лучший способ = лучше придумать что то вроде if (obj.status == 'ok') { res = false; } //естественно используя json |
Условие
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 Моё решение - которое выше и над которым я думал - не годится.) |
Событие в JS вызываются асинхронно
т.е. на момент когда вызывается success: function (т.е. приходит ответ от сервера) alert уже произошел. т.е. сначала вызывается alert(res); и только после этого в будущем наступит событие и придет ответ от сервера |
Тоесть, выход только
async: false, //Синхронный запрос |
Во первых посмотри что вообще приходит от сервера. Может там шиш с маслом. Пользуйся консолью.
И все операции которые должны пройти непосредственно после запроса и используя данные запроса должны выполняться в коллбеке success. |
Цитата:
А, так как использовать ajax для синхронных запросов "подвешивая" браузер клиента "не кошерно", то пока повышаю уровень своих знаний, в надежде со временем решить эту задачу.)) |
Ljubin,
Цитата:
|
Цитата:
Повышать знания надо, как раз для того чтоб не писать подобной хрени |
Цитата:
|
Часовой пояс GMT +3, время: 16:44. |