2012-05-15 4 views
0

그래서 자바 스크립트 내가 추측 객체 배열을 반환이 아약스 코드누구나이 아약스에서 각 항목의 출처를 설명 할 수 있습니까?

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

전화와 에디터 선택 API를 사용하여 메신저?

및이 .each 함수로 전환 정확하게 각 기능은 내가 '항목을'개체가 어디에서 오는지 이해 해달라고 및 액세스하려고하는 것은 - 무엇 무엇 메신저 OUT- 내려고

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

.each 함수 외부의 정보

예를 들어, 지금 당장 shop_name은 한번만 선언하면되고, 각 코드 안에 매번이 코드가 있어야하는 것은 아닙니다. 분명히 Ajax 함수가 호출하는 객체 배열에 액세스하는 방법이 있습니까?

임 확인이 난 그냥 길을가 refrences 항목이 코드에서

+2

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

답변

4

에서오고있다 .each 문이 설치하고, data.results을 통해 $.each() 반복을 이해 해달라고 오히려 간단한 쿄코입니다.

어레이 인 경우 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 no는'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;) {를 참조하십시오?
그건 당신의 논쟁의 반복입니다.

이제

callback.apply(object[ name ], args)를 참조 (매우 똑똑하고, jQuery를, 본 적이없는 사람이 그런 for를 사용)?
귀하의 iitem입니다.

관련 문제