2015-07-19 53 views
0

以下代碼對服務器進行API調用,並以JSON形式獲取響應。然後它將JSON對象轉換爲一個字符串,並使用各自的jQuery函數對其進行解析並將其存儲到本地存儲並加載頁面。我想在成功時做到這一點,並在失敗時拋出錯誤消息。我嘗試了.done().fail()函數,但它會引發未捕獲的表達式錯誤。如何添加onSuccess和onFailure getJSON()?

$.getJSON(apiURL, 

       {'call':'login','email':uname, 'pwd':password}, 

       function(data){ 

        localStorage.setItem('testObject', data.id);     

        $.ui.loadContent("home", null, null, "fade"); 

       } 
      ); 

有人能如何添加onSuccess和onFailure到這段代碼嗎?

+2

爲什麼你的數據轉換成字符串,然後再次返回到一個對象? –

+0

我直接嘗試了JSON解析。它沒有工作。我從api獲得的JSON格式不允許我直接訪問。所以我先把它串起來然後解析數據。 – deadshot

+2

@deadshot:'data'在您看到它的時候會成爲一個對象,因爲jQuery會爲您解析它。字符串化,然後再解析是毫無意義的。 –

回答

3

我試過.done()和.fail()函數,但它拋出一個未捕獲的表達錯誤。**

.done.fail確實是你將如何做到這一點,這聽起來像你的代碼試圖使用它們有一個語法錯誤。

$.getJSON(apiURL, { 'call': 'login', 'email': uname, 'pwd': password }) 
    .done(function() { 
     // Handle success 
     var obj = JSON.stringify(data);     // <=== These lines are 
     var parsed = JSON.parse(obj);     // <=== completely pointless 

     localStorage.setItem('testObject', parsed.id); 

     //alert(localStorage.getItem('testObject')); 

     $.ui.loadContent("home", null, null, "fade"); 
    }) 
    .fail(function() { 
     // Handle failure 
    }); 
+0

謝謝。這應該工作。我做的錯誤是在執行.done()之前部分終止了$ .getJSON()。 – deadshot

1

使用

$.getJSON(apiURL, { 'call': 'login', 'email': uname, 'pwd': password }) 
.done(function() { 
    var data = JSON.stringify(data); 
    //... 
}); 
.fail(function(){ 
    console.log('failure'); 
}); 

嘗試你也可以做

result = $.get('url',{param1:'param'}); 
result.done(function(data){ 
    //handle success 
}); 
result.done(function(){ 
    //handle failure 
}); 
+0

這也可以工作。感謝您的回答。 – deadshot