2011-12-20 181 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。