这是我的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
未显示。
答案 0 :(得分:0)
您不应声明全局变量。使用var
关键字创建局部变量。
您的问题是数组中的两个对象不是同一类型。第一项只有EmployeeAttachment
,第二项有Employee
和EmployeeHistory
。
$.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 ,变量将被视为全局变量。