从JSON数据创建联系人表

时间:2012-04-10 03:56:24

标签: jquery html json html-table

我最近开始了关于HTML,JSON和jQuery的演示项目。 我现在要实现的是从JSON文件中获取数据并将其加载到我的表中。 我是JSON的新手所以我花了一天时间才得到任何结果,数据没有加载到我的表格中。

这是我的JSON文件'contact.json':

{
    "length": 2,
    "info": [
        {
            "fullname":"Noob Here",
            "email":"myemail@server.com",
            "phone":"123456",
            "badgeid": "11111",
        },
        {
            "fullname":"Newbie There",
            "email":"hisemail@server.com",
            "phone":"589433",
            "badgeid": "11112",
        }
    ]
}

我的脚本加载数据:

window.onload = function () {
    var contacts;
    setTimeout(loadData(contacts, "contact"), 2000);
    $(contacts.info).each(function(index, element){  
        $('#contacts').append('<tr><td>' + element.fullname + '</td><td>'
            + element.email + '</td><td>'
            + element.phone + '</td><td>'
            + element.badgeid + '</td></tr>');       
    })
};

function loadData(myobject, myfile){
    myobject = $.parseJSON("../data/" + myfile + ".json");
};

请注意我可能要从各种JSON文件加载,因此loadData在那里有一些agruments。否则,它将直接解析JSON文件。

我已经在HTML中声明了一个'#contact'表。 错误控制台说:

  

Uncaught SyntaxError:意外的令牌。
      jQuery.extend.parseJSONjquery.min.js:442个
      loadDataHomepage.html:23
      在window.onload

为什么会出现此错误?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

参考这篇文章

JSON.parse unexpected character error

我知道你解析了已经解析过的JSON

您可以按如下方式替换脚本:

    window.onload = function () {
       var contacts;
       $.getJSON('contact.json',function(contacts)
        {
          $(contacts.info).each(function(index, element){  
               $('#contacts').append('<tr><td>' + element.fullname + '</td><td>'
                 + element.email + '</td><td>'
                 + element.phone + '</td><td>'
                 + element.badgeid + '</td></tr>');       
           })  
        });
     };

答案 1 :(得分:1)

通过JSON验证器运行您的JSON,例如JSONLint.com。您的JSON中存在语法错误:

{
    "length": 2,
    "info": [
        {
            "fullname":"Noob Here",
            "email":"myemail@server.com",
            "phone":"123456",
            "badgeid": "11111",  <---- Do not put a comma before a curly brace
        },
        {
            "fullname":"Newbie There",
            "email":"hisemail@server.com",
            "phone":"589433",
            "badgeid": "11112",  <---- remove comma before curly brace
        }
    ]
}

你的JSON应该是这样的:

{
    "length": 2,
    "info": [
        {
            "fullname":"Noob Here",
            "email":"myemail@server.com",
            "phone":"123456",
            "badgeid": "11111"
        },
        {
            "fullname":"Newbie There",
            "email":"hisemail@server.com",
            "phone":"589433",
            "badgeid": "11112"
        }
    ]
}