2012-05-15 12 views
0

因此Im使用與JavaScript調用此Ajax代碼任何人都可以解釋這個ajax .each函數中的物品來自哪裏?

$.ajax({ url: etsyURL, dataType: 'jsonp', success: function(data) { 

返回對象陣列I猜Etsy的API?

,並進入這個。每個功能

if (data.ok) {   
     gallerySize=data.count; 
     $.each(data.results, function(i,item) { //assign array variables 
      shopName=item.Shop.shop_name; 

什麼即時試圖找出OUT-也正是每一個功能就是doing-我不明白的地方的「項目」對象來自,我試圖訪問每個函數之外的信息

例如 - 因爲它是現在 - shop_name只需要聲明一次,所以在每個方法中每次都有這樣的代碼是沒有意義的。當然有一種方法可以訪問ajax函數調用的任何對象數組?

我敢肯定,這是一個相當簡單的東西─我只是不明白的方式。每個聲明它的設置以及它refrences將項目從

+2

http://api.jquery.com/jQuery.each/ –

回答

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' 
} 
+0

所以基本上item = data.results [0]的第一個實例? – Gazow

+0

@Gazow不,它遍歷'data.results'中的每個項目。意味着''.each()'回調中的代碼是在'data.results'中的每個項目中執行的 – Joseph

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)
這就是你的iitem

相關問題