执行每个循环时,不会显示JSON数组数据

时间:2015-07-02 11:13:33

标签: jquery json

这是我的JSON数组:

[
  {
    "EmployeeAttachment": {
      "id": "1",
      "client_id": "D-3043065515",
      "emp_id": "E0002",
      "forward_by": null,
      "datetime": "2015-07-03 00:20:13"
    }
  },
  {
    "Employee": {
      "id": "4",
      "emp_id": "E0004",
      "first_name": "emp",
      "middle_name": null,
      "last_name": "test",
      "gender": "F",
      "dob": "1958-07-24",
      "status": "active",
      "full_name": "emp test"
    },
    "EmployeeHistory": {
      "id": "2",
      "emp_id": "E0004",
      "department_id": "1",
      "designation_id": "4",
      "devision_id": "1",
      "grade_id": "1",
      "joining_date": "2015-07-08",
      "resign_date": null,
      "basic_salary": "6.00",
      "reporting_to": "E0002",
      "reporting_office": "1",
      "leave_approval_authority": "0",
      "sales_promotion_approval_authority": "0",
      "sales_promotion_limit": "0.00",
      "field_personnel": "1",
      "field_service": "1",
      "sales_manager": "0",
      "work_location": "tezpur"
    }
  }
]

和我的each循环如下:

$.each(resp,function(indx,obj){ 
  emp_id_att= obj.EmployeeAttachment.emp_id;alert(emp_id_att);
  emp_id=obj.EmployeeHistory.work_location;alert(emp_id);
});
执行循环时,

emp_id未显示。

3 个答案:

答案 0 :(得分:0)

您不应声明全局变量。使用var关键字创建局部变量。

您的问题是数组中的两个对象不是同一类型。第一项只有EmployeeAttachment,第二项有EmployeeEmployeeHistory

$.each(resp,function(indx,obj){

  if (obj.EmployeeAttachment) { // CHECK before you use

    // create local variables instead of global
    var emp_id_att = obj.EmployeeAttachment.emp_id;
    alert(emp_id_att);

  }

  if (obj.EmployeeHistory) { // CHECK before you use

    var emp_id = obj.EmployeeHistory.work_location;
    alert(emp_id);

  }
});

答案 1 :(得分:0)

您的JSON数组无效,因为它不包含相同类型/结构的对象。因此迭代它可能很困难。您期望EmployeeAttachment和EmployeeHistory成为同一顶级对象的成员,但它们不是。

使用这个宝贵的工具查看您的JSON,以便更加清晰:http://jsonviewer.stack.hu/

粘贴,然后单击菜单中的“格式”。

答案 2 :(得分:0)

您无法使用此类json进行迭代,因为每个对象的对象键都不同。它一次只能用于一个对象,并且会为另一个对象抛出未定义的对象: 尝试在 for循环

中使用 if 条件
$.each(resp,function(indx,obj){ 

   if (obj.EmployeeAttachment){
     emp_id_att= obj.EmployeeAttachment.emp_id;
     alert(emp_id_att);
   }  

   if(obj.EmployeeHistory){
     emp_id=obj.EmployeeHistory.work_location;
     alert(emp_id);
   }
});

还想提一下,如果你不提供 var ,变量将被视为全局变量。