你不想oData
用 jQuery 在你的 $.each 中包装
所以,而不是
$.each($(oData['ops:patent-family']['ops:family-member']),
你要:
$.each(oData['ops:patent-family']['ops:family-member'],
此外 - 您必须使用返回的 json 降低一个级别(有第一个 'ops:world-patent-data' 级别),它看起来更像:
if(oData['ops:world-patent-data'] &&
oData['ops:world-patent-data']['ops:patent-family'] &&
oData['ops:world-patent-data']['ops:patent-family']['ops:family-member']){
$.each(oData['ops:world-patent-data']['ops:patent-family']['ops:family-member'],
function(iIndex, mValue) {
// LOOP THROUGH EACH FAMILY MEMBER AND DO STUFF!
console.log(iIndex, mValue)
});
}
另一种完全不同的方法是使用 jquery deferreds 语法并使用 .pipe 来转换数据 - 可能比if
var sUrl = "http://ops.epo.org/2.6.2/rest-services/family/publication/docdb/EP.1000000.A1/.js?callback=?";
$.getJSON(sUrl)
.pipe(function(data){
try{
return data['ops:world-patent-data']['ops:patent-family']['ops:family-member'];
} catch(e){
return [];
}
})
.then(function(members){
$.each(members, function(iIndex, mValue){
console.log(iIndex, mValue)
})
})