2014-01-18 3 views
0

Я работаю над проблемой peske за последние несколько дней. Я создал объект для обработки сценария входа. Сценарий Логин обрабатывается ведьмой PHP скрипт эха из объекта JSON:jQuery Ajax call object property scope

{'status' : true} // could also be false 

запрос Аякса завершает каждый раз, и я могу console.log() его. Проблема заключается в функции обратного вызова. Я попытался следующие допустимые параметры/функции из документации:

complete 
success 
.done() 

В перезвонить я пытаюсь установить свойство объекта/переменной в зависимости от возвращения. Он не видит это назначение до второго запуска скрипта. Я предполагаю, что это происходит из-за того, что что-то выполняется перед другим или проблемой с областью?

Чтобы уточнить: Допустим, скрипт работает, и я вернусь к истине. Затем я хочу установить для свойства объекта значение вместо него. Я помещаю console.log() внутри обратного вызова, и это работает каждый раз, но главный объект не увидит его, если я не отправлю его дважды.

Вот код. Любые вспомогательные услуги:

var loginAuth = { 
    form : $('form'), 
    status : false, 
    init : function() { 
     loginAuth.ajaxCall(); 
    }, 
    ajaxCall : function(loginData) { 
     // Get Post variables 
     var loginData = { 
      username : $('input[name=username]').val(), 
      password : $('input[name=password]').val() 
     }; 

     // Proccess the form 
     $.ajax(
      { 
       url : "http://localhost/url-where-results-are", 
       dataType : "json", 
       type : "post", 
       data : loginData, 
      }).done(function(data) { 
       if(typeof data != 'object') 
       { 
        $.parseJSON(data); 
       } else { 
        loginAuth.status = data; 
        console.log(loginAuth.status); 
       } 
      }); 
    } 

} //// END loginAuth Object //// 
+0

попытка изменить console.log (loginAuth.status) в console.log ("MyLog", loginAuth.status) – Kristijan

+0

P.S. это просто, чтобы увидеть, что результат в консоли - это действительно ваш консольный журнал - и убедитесь, что это действительно так. – Kristijan

ответ

0

У вас есть что-то не так. Вы хотите только $.parseJson, если это объект. Кроме того, вам не нужно называть это, поскольку jQuery обрабатывает синтаксический анализ для вас.

if(typeof data != 'object') 
      { 
       $.parseJSON(data); 
      } else { 
       loginAuth.status = data; 
       console.log(loginAuth.status); 
      } 

Это было бы правильно:

if(typeof data == 'object') { 
    alert(data.status); 
    if(data.status == true) { 
    loginAuth.status = true; 
    } else { 
    loginAuth.status = false; 
    } 
} else { 
    console.log(data); 

}