使用$ .getJSON的本地JSON文件的Parsererror - 但解析responseText工作。为什么?

时间:2014-02-23 17:16:00

标签: javascript json

我正在尝试使用下面的代码解析本地JSON文件。基本上,成功函数永远不会因为parsererror被调用,但是当我重试解析responseText时,一切似乎都很好:

$.getJSON('./data/fixtures/teams.txt?callback=?', function(json) {
    // never called because of parsererror
}.error(function(jqXHR, textStatus, errorThrown) {
    console.log("incoming Text " + jqXHR.responseText);
    var json = JSON.parse(jqXHR.responseText)); // this works!
    $.each( json.teams, function( index, team ) {
            console.log(team.title);
    });
}
);

这是teams.txt的内容:

{"teams":[{"key":"irn","title":"Iran","code":"IRN"}]}

我将文本复制粘贴到http://jsonviewer.stack.hu,但它没有给我任何错误。我错过了什么?

1 个答案:

答案 0 :(得分:1)

如果你想进行JSONP调用,你最好这样做(至少就像我这样做):

$.ajax({
    url: './data/fixtures/teams.txt',
    dataType: 'jsonp',
    success: function (json) {
        $.each( json.teams, function( index, team ) {
            console.log(team.title);
        });
    }
});

如果它不是 JSONP调用,那么您应该从网址中移除callback