在jQuery中迭代json对象数组


Iterate through json object array in jQuery

我正在使用CodeIgniter。在我的控制器文件中,我有一个包含数组的JSON(作为调用不同API的结果):

{
    "Specialities": [{
        "SpecialityID": 1,
        "SpecialityName": "Eye Doctor"
    },{
        "SpecialityID": 2,
        "SpecialityName": "Chiropractor"
    },{
        "SpecialityID": 3,
        "SpecialityName": "Primary Care Doctor"
    }] 
}

在控制器中,我写了

echo $response[0];
使用这行代码,我可以轻松地遍历jquery中的json对象:
$.ajax({
    type: 'GET',
    url: 'http://localhost/rest_project/main/res',
    dataType: 'JSON',
    crossDomain: true,
    xhrFields: { withCredentials: true },
    success: function (data){
        $.each(data.Specialities,function(key,value){
            console.log(value.SpecialityName);
        });
    }  
});

但是如果我传入数组:

echo json_encode($response); 

那么我无法得到结果:

$.ajax({
    type: 'GET',
    url: 'http://localhost/rest_project/main/res',
    dataType: 'JSON',
    crossDomain: true,
    xhrFields: { withCredentials: true },
    success: function (data){
        $.each(data[0].Specialities,function(key,value){
            console.log(value.SpecialityName);
        });
    }
});
有人能帮我一下吗?

似乎你的jsonObject不是一个数组和each只与数组工作。

//Check if your jsonObject is array, if not then make it.
if (!$.isArray(jsonObject)) {
    jsonObject = [jsonObject];
}
$.each(jsonObject, function(key, value){
  console.log("FULL NAME " + value.FullName);
});

var data = {
    "Specialities": [{
        "SpecialityID": 1,
        "SpecialityName": "Eye Doctor"
    },{
        "SpecialityID": 2,
        "SpecialityName": "Chiropractor"
    },{
        "SpecialityID": 3,
        "SpecialityName": "Primary Care Doctor"
    }] 
};
//Convert your jsonObject to array for each
if (!$.isArray(data)) {
    data = [data];
}
$.each(data[0].Specialities,function(key,value){
   console.log(value.SpecialityName);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>