无法解析JSON字符串

时间:2011-08-22 07:58:00

标签: javascript jquery json

我有JSON文件input.json:

{
"consumner_key": {
    "display_name": "CONSUMER-KEY:",
    "name":"consumer_key",
    "format": "string",
    "type": "textbox",
    "isMandatory": "true"
},
"secret_key": {
    "display_name": "CONSUMER-SECRET:",
    "name":"consumer_secret",
    "format": "string",
    "type": "textbox",
    "isMandatory": "true"
}
}

我使用$.getJSON()获取JSON文件并解析它:

$.getJSON('input.json',function jsonData(Data)
{
$.each(Data, function(m,field) 
        {
            console.log(m);
            $('#tabs-4 social').append('<input></input>').attr({type:'text',name:this.consumner_key+''+this.name});
            $('#tabs-4 social').append('<input></input>').attr({type:'text',name:this.secret_key+''+this.name});
        });

});

当我运行它时,我无法查看选项卡中的输入框。请指出我出错的地方。

2 个答案:

答案 0 :(得分:2)

你说你有文件input.js,但是你的代码中有input.json - 这可能是一个原因吗?

<强>更新

您还可以为您的函数命名 - jsonData。据我所知你不应该命名内联javascript函数,它不会编译。只是做

$.getJSON('input.json',function (Data) {
    $.each(Data, function(m,field) {
        console.log(m);
        $('#tabs-4 social').append('<input></input>').attr({type:'text',name:this.consumner_key+''+this.name});
        $('#tabs-4 social').append('<input></input>').attr({type:'text',name:this.secret_key+''+this.name});
    });

});

更新2

此外,您执行this.consumner_key+''+this.namethis.secret_key+''+this.name,而consumner_keyname是不同级别的属性。我相信,this内的each应该代表json对象中的每个子对象。因此它将具有属性name,但不具有consumner_key。我可能错了,但无论如何this不能同时拥有这两个属性。

答案 1 :(得分:0)

我终于设法清除了所有的错误。在tomcat的web.xml中指定MIME类型是不够的。我不得不在我的js文件中手动覆盖它。下面的代码删除了错误“not well formed”

$.ajaxSetup({beforeSend: function(xhr){   
if (xhr.overrideMimeType)  
{     
    xhr.overrideMimeType("application/json");}
} 
});

此外,我在jsp和javascript文件中引用了json文件,这导致了无效的标签错误