2012-09-11 1 views
0

아약스를 사용하여 json 응답을 얻으려면 다음 코드를 작성하십시오. 응답에서 나는 "prodId"를 취하고있다. 페이지로드 및 각 응답에 다른 "prodId"가 포함될 경우 더 많은 응답이 페이지에 전달됩니다. "prodId"가 이미 수신되었는지 확인해야합니다. 위의받은 prodId가있는 페이지에 일부 div가 이미 있습니다.json에서 데이터를 가져와 배열에서 사용할 수 있는지 확인하십시오.

전 배열 취급에 익숙하지 않습니다. 모든 json 응답이 페이지로드 자체에서 발생한다는 것을 기억해야합니다. 따라서 첫 번째 응답을 얻은 후에 중복 응답이 오는지 확인해야하며이를 방지해야합니다. 제발 도와주세요

$.ajax({ 
    type: "GET", 
    dataType: "jsonp", 

success: function(data){ 
    prodId = data.prodID; 
    //populate this data in page 
}); 

답변

1

prodID을 기반으로 식별하는 데 도움이 될만한 요소에 뭔가를 추가하십시오. 요소 ID는 여기에 적합하지만 다른 용도로 사용하는 경우 다른 클래스를 추가하면됩니다. 그런 다음

newElement.addClass('prod-' + data.prodID); 

경우 바로 확인하십시오 DOM에 새 요소를 추가할지 여부를 결정 : 당신은 물론 로컬 사전을 메모리보다는 DOM에 조회를 수행 할 수

if($('.prod-' + data.prodID).length == 0) { ... } 

:

var addedProducts = {}; 

때마다 당신이 DOM에 요소를 추가

addedProducts[data.prodID] = newElement; 

는 DOM에 요소를 추가할지 여부를 결정 :

if(!addedProducts.hasOwnProperty(data.prodID)) { ... } 

전체 코드는 다음과 같은 것을 볼 수 있었다 : 물론

success: function(data){ 
    prodId = data.prodID; 

    if($('.prod-' + prodId).length == 0) { 
    var newElement = $('<div/>').html(some content as determined by data); 
    newElement.addClass('prod-' + prodId); 
    newElement.appendTo('body'); 
    } 
}); 

, 당신은 당신의 요소를 작성하고 어디에 어떻게 당신은 당신이 성취하고자하는 것에 달려 있습니다. 나는 당신이 당신의 "이 데이터를 페이지에 채우십시오"코멘트 아래에 이것을 알아 냈다고 믿습니다. 추가 할 내용은 addClass 전화이고, 줄 바꿈은 if입니다.

+0

감사합니다 David,하지만 JQuery를 처음 사용하기 때문에 해결책을 찾지 못했습니다. – Shah

+0

@Shah : 더 많은 코드 예제로 답변을 업데이트했습니다. –

+0

David 나는 당신의 코드를 시험해 보았고 정말 도움이된다. 대단히 감사합니다 :) 한 가지 의심의 여지가 있습니다, 거기에 중복 제품이 있다면 해고에서 json 전화를 피할 수있는 방법이 있습니까. – Shah

관련 문제