2011-12-20 185 views
2

我對JSON處理很陌生,而且我自己被卡住了。我的頁面包含以下腳本;解析JSON字符串返回null

<script type="text/javascript"> 



$(document).ready(function() { 

    $('#progressBar').progressbar({value: 0.0}); 


    process(); 
}); 
    function process() { 

     getStatus(); 
     setInterval(getStatus,1000); 
    } 

    function getStatus() { 
     $.getJSON('status-report', function(data) { 
      var statusBean = $.parseJSON(data); 
       $('#progressBar').progressbar('option','value',$.trim(statusBean.percentComplete)); 
      $('#status').html(statusBean.statusDescription); 
     }); 
    } 


</script> 

用Firebug,我可以看到呼叫「狀態報告」返回一個JSON字符串

{"statusBean":{"percentComplete":50.0,"statusDescription":"Default Description"}} 

$.parseJSON後,螢火顯示我的變量statusBean爲空。

我在做什麼錯?

+3

'data'已經是一個JavaScript對象。 'getJSON'爲你解析響應。它在文檔中有描述:*「成功」回調傳遞返回的數據,這通常是JSON結構定義的JavaScript對象或數組,並使用'$ .parseJSON()'方法解析。「*。 – 2011-12-20 12:31:42

+1

[why parseJSON returns null]的可能重複(http://stackoverflow.com/questions/6465468/why-parsejson-returns-null) – 2011-12-20 12:35:13

回答

3

data的值作爲傳遞給getJSON的回調函數,將已經是JS對象。當對象傳遞給它時,$.parseJSON將返回null,因爲它期望一個字符串。 $.parseJSON的調用可以簡單地在這裏刪除,因爲getJSON首先假定了JSON。