Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.06.2016, 14:23
Аспирант
Отправить личное сообщение для Vincent Vega Посмотреть профиль Найти все сообщения от Vincent Vega
 
Регистрация: 21.02.2016
Сообщений: 53

success json undefined
Подскажите пожалуйста..
function loginValidate( inp, login )
{
    var msg = inp+'='+login;
    msgServer( msg ) ? showAnswer( 'Iseet User!' ) : showAnswer( 'ok!' );   
}
showAnswer() - просто показывает ответ.
msgServer() - отправляет запрос на сервер и получает ответ в виде true/false.
Подскажите, почему в loginValidate возвращается undefined?
success: function ( data ) alert( data );
- выдает true;


Пробовал:
var resp =  msgServer( msg );
alert( resp );
- undefined.
Ответить с цитированием
  #2 (permalink)  
Старый 30.06.2016, 15:40
Профессор
Отправить личное сообщение для Царь Леонид Посмотреть профиль Найти все сообщения от Царь Леонид
 
Регистрация: 22.08.2013
Сообщений: 217

Если отвечать, исходя из кода, который вы показали, то однозначно можно утверждать только одно : что-то возвращает undefined. Выкладывайте все запросы, серверные скрипты и тд
Ответить с цитированием
  #3 (permalink)  
Старый 30.06.2016, 15:56
Аспирант
Отправить личное сообщение для Vincent Vega Посмотреть профиль Найти все сообщения от Vincent Vega
 
Регистрация: 21.02.2016
Сообщений: 53

ok.
function phoneVal( name, values )
{
    values.length < 10 || values.length > 12 || isNaN( values ) ? //чахлая проверка
        chenger( name, 'Некорректный телефон!' ) : //показывает ответ
        var msg = msgServer( name+'='+values ) ;   //запрос к серверу и почему-то в msg попадает undefined...
    msg ? chenger( name, 'Уже существует!' ) : chenger( name, 'ok' ) ;
}

отправка на сервер:
function msgServer( msg )
{
    //alert( msg );
    $.ajax  ({
        type:       'post',
        data:       msg,
        url:        '/ajax/',
        dataType:   'json',
        success:    function( data )     {  return data; // тут true/false, проверено alert, работает! },
        error:		function( xhr, str ) {  alert('Возникла ошибка: ' + xhr.responseCode); }
    });
}

php нужен?
Ответить с цитированием
  #4 (permalink)  
Старый 30.06.2016, 16:22
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Если не назначить фукции что она должна возвращать после как отработает она вернет undefined ... если хотите что то отдавать после ее работы отдавайте через return
Ответить с цитированием
  #5 (permalink)  
Старый 30.06.2016, 16:28
Аспирант
Отправить личное сообщение для Vincent Vega Посмотреть профиль Найти все сообщения от Vincent Vega
 
Регистрация: 21.02.2016
Сообщений: 53

success: function( data ){  return data; // тут true/false, проверено alert, работает! },
в самом ответе data содержится true или false. Я как бы return data. Или что то не так делаю?

Последний раз редактировалось Vincent Vega, 30.06.2016 в 16:30.
Ответить с цитированием
  #6 (permalink)  
Старый 30.06.2016, 16:31
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Сообщение от Vincent Vega Посмотреть сообщение
success: function( data ){  return data; // тут true/false, проверено alert, работает! },
в самом ответе data содержится true или false. Я как бы return data. Или что то не так делаю?
Если вы слушаете ответ от loginValidate то и return должен быть в ней прописан.

Из кода выше все ваши фукции не имеют return а значит нечего не возвращают верней возвращают ответ по умолчанию то есть undefined

Последний раз редактировалось dd_smol, 30.06.2016 в 16:41.
Ответить с цитированием
  #7 (permalink)  
Старый 30.06.2016, 16:47
Аспирант
Отправить личное сообщение для Vincent Vega Посмотреть профиль Найти все сообщения от Vincent Vega
 
Регистрация: 21.02.2016
Сообщений: 53

Сообщение от dd_smol Посмотреть сообщение
Если вы слушаете ответ от loginValidate то и return должен быть в ней прописан.

Из кода выше все ваши фукции не имеют return а значит нечего не возвращают верней возвращают ответ по умолчанию то есть undefined
Как раз я слушаю ответ от msgServer() который жду в loginValidate() в переменную msg.
Ответить с цитированием
  #8 (permalink)  
Старый 30.06.2016, 16:55
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Зеркальная ситуации msgServer не чего не возвращает. То что вы написали return в success нечего не меняет.

function msgServer( msg )
{
    //alert( msg );
    var flag;

    $.ajax  ({
        type:       'post',
        data:       msg,
        url:        '/ajax/',
        dataType:   'json',
        success:    function( data )     { flag = data; // тут true/false, проверено alert, работает! },
        error:		function( xhr, str ) {  alert('Возникла ошибка: ' + xhr.responseCode); }
    });

    return flag;
}
Ответить с цитированием
  #9 (permalink)  
Старый 30.06.2016, 17:32
Аспирант
Отправить личное сообщение для Vincent Vega Посмотреть профиль Найти все сообщения от Vincent Vega
 
Регистрация: 21.02.2016
Сообщений: 53

dd_smol,
Спасибо за наводку! Пытаюсь + в карму, пишет "вы должны добавить отзыв кому-то еще, прежде чем сможете добавить его dd_smol". Все верно, только есть еще заморочка. нужно выставить async: false. Из за асинхронности он возвращает ответ раньше чем получает его от сервера.
Ответить с цитированием
  #10 (permalink)  
Старый 30.06.2016, 17:40
Аспирант
Отправить личное сообщение для Vincent Vega Посмотреть профиль Найти все сообщения от Vincent Vega
 
Регистрация: 21.02.2016
Сообщений: 53

выставил async: false отладчик ругается, мол не молодец, так ниразу делать не стоит. Есть еще какие нибудь варианты?

наковырял в гугле какую-то функцию типа callback, только не знаю как ее правильно прикрутить.

Последний раз редактировалось Vincent Vega, 30.06.2016 в 17:43.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
Вставка json данных 1lider AJAX и COMET 5 14.02.2015 21:18
Не могу распарсить JSON. gorenie jQuery 3 29.11.2013 22:26
Странности undefined в IE7 и JSON Viper jQuery 6 14.03.2012 13:53
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12