我正在尝试遍历industryIdentifier列表并保存类型和标识符值。
我尝试过使用以下代码,但是输出结果未定义。
var url = "https://www.googleapis.com/books/v1/volumes/EXiMZwEACAAJ";
$.getJSON(url, function(data) {
var bookID = data.items[0].id;
var title = data.items[0].volumeInfo.title;
var industryIdentifiers = data.items[0].volumeInfo.industryIdentifiers;
$.each(industryIdentifiers, function(result){
var idType = result.type;
var idValue = result.identifier;
alert (idType + " = " + idValue);
});
});
答案 0 :(得分:1)
这是因为你错误地使用$.each,$ .each有以下回调结构,
回调
Type: Function( String propertyName, Object valueOfProperty )
The function that will be executed on every object.
所以,只需使用,
$.each(industryIdentifiers, function(result){
将结果生成索引,而不是找出值。从而为您提供undefined
值。
这是工作代码,
var url = "https://www.googleapis.com/books/v1/volumes/EXiMZwEACAAJ";
$.getJSON(url, function(data) {
var bookID = data.id;
var title = data.volumeInfo.title;
var industryIdentifiers = data.volumeInfo.industryIdentifiers;
$.each(industryIdentifiers, function(index,value){
var idType = value.type;
var idValue = value.identifier;
alert (idType + " = " + idValue);
});
});
并且,您可以查看demo here。
而且,您错误地访问结果 JSON 。由于它返回单个值,您可以直接以data.id
的形式访问它。
答案 1 :(得分:0)
你有两个问题。第一个问题是data.items未定义,为了访问该数据对象中的属性,您必须执行此data.nameOfProperty。您的第二个问题是,当您遍历industryIdentifier时,您必须在$ .each调用中为匿名函数声明第二个参数。由于第一个参数只是数组的索引而第二个参数是元素的值,因此在这种情况下,它将是具有类型和标识符属性的对象。
答案 2 :(得分:0)
试试这段代码......
$(document).ready( function() {
var url = "https://www.googleapis.com/books/v1/volumes/EXiMZwEACAAJ";
$.getJSON(url).done(function( data ){
var bookID = data.id;
var title = data.volumeInfo.title;
var industryIdentifiers = data.volumeInfo.industryIdentifiers;
//console.log(industryIdentifiers);
$.each(industryIdentifiers, function(i, item){
console.log(item);
var idType = item.type;
var idValue = item.identifier;
alert (idType + " = " + idValue);
});
});
});