从JSON对象获取数据时出错

时间:2017-01-29 10:55:14

标签: javascript jquery json ajax

我有一个JSON数据作为info.json。

[


    {"employee": {"name":"A", "salary": "324423"}},

        {"employee": {"name":"B", "salary": "43111"}},

        {"employee": {"name":"C", "salary": "43434"}},

        {"employee": {"name":"D", "salary": "120000"}},



]

和index.html为              链接         linklinklink                  

    </body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
var item,$emp=$('#emp') ;$aa=$('a') ;$sal=$('#salary');
    $.ajax({
    url:"info.json",
    success:function(data){
    item=data;
    }
           })

    $aa.click(function(){
      var index=$aa.index(this);
        var
        inf=item[index].employee;
            $sal.text(inf.salary);
        return false;
    })

    </script>    

我只想在index.html的JSON DATA点击按钮上显示员工的姓名和工资:

  1. 同时在1个链接中
  2. 全部由4个单独的4个链接
  3. 但是得到错误:

    enter image description here

    我认为这很简单,但我是AJAX的新手。 感谢提前

2 个答案:

答案 0 :(得分:1)

你的JSON在最后一行有一个额外的逗号,删除它

您的代码正在获取json数据但未解析它,请使用此

$.ajax({
    url: "info.json",
    success: function(data) {
        item = JSON.parse(data);
    }
})

现在您拥有项目

中的数据

访问您的数据:

员工人数为item.length

第一个员工姓名为item[0].employee.name

第一名员工薪水为item[0].employee.salary

第二名员工姓名为item[1].employee.name

第二名员工薪水为item[1].employee.salary

依旧......

答案 1 :(得分:0)

  1. 首先,您需要确保在数据从服务器返回后附加处理程序
    1. 第二,您需要删除最后一名JSON员工之后的(,)。
  2. 这是JSON: -

    [
    {"employee": {"name":"A", "salary": "324423"}},
    
        {"employee": {"name":"B", "salary": "43111"}},
    
        {"employee": {"name":"C", "salary": "43434"}},
    
        {"employee": {"name":"D", "salary": "120000"}}
    ]
    

    这是代码: -

     var item, $emp = $('#emp');
     $aa = $('a');
     $sal = $('#salary');
     $.ajax({
    url: "info.json",
    success: function(data) {
      //item = data;
      //handle click only after the data came back
      handleClick(data);
    },
    error:function(xhr,status,error){
      console.log(error);
    }
     })
     var handleClick = function(item){
    $aa.click(function() {
    var index = $aa.index(this);
    debugger;
    if (item) {
      var
        inf = item[index].employee;
      $sal.text(inf.salary);
      $emp.text(inf.name);
    }
    return false;
      })
    }
    

    这是一个完整的Demo