所以我使用etsy api和javascript调用这个ajax代码
$.ajax({ url: etsyURL, dataType: 'jsonp', success: function(data) {
我会返回一个对象数组吗?
并进入此.each函数
if (data.ok) {
gallerySize=data.count;
$.each(data.results, function(i,item) { //assign array variables
shopName=item.Shop.shop_name;
我想弄清楚的是 - 每个函数到底在做什么 - 我不明白'item'对象来自哪里,并且我试图访问.each函数之外的信息
例如 - 就像现在一样 - shop_name只需要声明一次,在每个方法中每次都有这个代码是没有意义的。当然有一种方法可以访问ajax函数调用的任何对象数组吗?
我确定这是一件相当简单的事情 - 我只是不明白它设置的.each语句的方式以及它引用的项目来自哪里
答案 0 :(得分:4)
在您的代码中,$.each()
遍历data.results
。
如果是数组,i
是索引,item
是该索引的值。
data.results = [
'foo', // i = 0, item = 'foo'
'bar', // i = 1, item = 'bar'
'baz' // i = 2, item = 'baz'
]
如果是对象,i
是关键,item
是该关键字下的值。
data.results = {
'thefoo' : 'fooness', // i = 'thefoo', item = 'fooness'
'thebar' : 'barness', // i = 'thebar', item = 'barness'
'thebaz' : 'bazness' // i = 'thebaz', item = 'bazness'
}
答案 1 :(得分:0)
我们来看看jQuery's code:
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object );
if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
}
}
}
return object;
},
请参阅for ( name in object ) {
和for ( ; i < length; ) {
?
这就是你论证的循环
(非常聪明,jQuery,从未见过有人使用for
这样的内容)
现在,请参阅callback.apply( object[ name ], args )
?
这是您的i
和item
。