使用$ .parseJSON解析服务器响应失败

时间:2014-08-10 18:19:08

标签: javascript jquery json

我有两个简单的功能:

function getBatchSliceInfo(batch_num){
    //get the batch slice info for the batch_num
    alert('batch num is ' + batch_num); //returns the batch_num correctly
    $.getJSON("statistics_batchdb.jsp", {batch_number: batch_num, slice_stats: 'true'}, showTable);
}

function showTable(data){
    $("#table_slice_stats").hide();
    if(data.error){
        console.log("Something went wrong"); 
    }
    var jo = $.parseJSON(data); 
    alert('This JSON object has this many elements: '  + jo.length); 
    $.each(jo[0], function (i, val){
        alert('This i value is' + i );
        alert('This val value is' + val);
    }); 
    $("#table_slice_stats").show();
}

所以我点击一个按钮就调用了getBatchSliceInfo,我们得到了JSON。

响应似乎是正确的,所以服务器端我没问题。

screenshot

但是,我没有正确地将该响应传递给showTable。 “data”似乎为null,因为在控制台中我收到错误:

Uncaught TypeError: Cannot read property 'length' of null batch_statistics_new.jsp:274
showTable batch_statistics_new.jsp:274
o jquery-1.7.2.min.js:2
p.fireWith jquery-1.7.2.min.js:2
w jquery-1.7.2.min.js:4
d jquery-1.7.2.min.js:4

我确信这是一个非常简单的语法问题,但我不知道发生了什么。

1 个答案:

答案 0 :(得分:1)

检查您的data

var data= [{slice_name:Nutrion,iteration_zero:.....},{......},{......}]

转换为json Format.your数据后会变成这样,

var data= {[{slice_name:Nutrion,iteration_zero:.....},{......},{......}]} //It not json format.

如果你想使用长度属性,它会抛出异常。所以,不要解析为json,也要做同样的思考。