2014-01-18 101 views
0

過去幾天我一直在研究peske問題。我創建了一個對象來處理登錄腳本。登錄腳本由PHP腳本女巫回波的加工出一個JSON對象:jQuery Ajax調用對象屬性範圍

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

AJAX請求完成每次我可以CONSOLE.LOG()它。問題出在回調函數中。我曾嘗試以下允許參數/功能從文檔:

complete 
success 
.done() 

在回電,我嘗試設置根據返回的對象屬性/變量。直到腳本運行第二次纔看到此分配。我假設這是因爲某些東西在另一個或範圍問題之前運行?

所以澄清: 可以說腳本運行,我回來了。然後我想要將對象屬性的狀態設置爲false而不是false。我在回調中放置了一個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

附:這只是爲了看到控制檯中的結果真的是你的控制檯日誌 - 並且看到這真的發生了。 – 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); 

}