2010-06-02 7 views
1

jQuery를 사용하여 XML 데이터를 구문 분석하려고하는데 필요한 노드의 'ID'속성을 추출하여 배열에 저장 했으므로 이제 실행하고 싶습니다. 각 배열 구성원에 대한 루프 및 결국 각 ID에 특정 메모에서 더 많은 특성을 잡아.jQuery로 XML을 파싱하는 데 문제가 있습니다.

문제는 현재 'for'루프에 도달하면 루핑되지 않으며 xml 경로 데이터를 잘못 작성한 것 같습니다. 그것은 한 번 실행되고 나는 'alert (arrayIds.length);를 받는다. 한 번만, 그리고 후속 XML 경로 코드를 제거하면 정확한 시간이 반복됩니다.

var arrayIds = new Array(); 
$(document).ready(function(){ 
    $.ajax({ 
    type: "GET", 
    url: "question.xml", 
    dataType: "xml", 
    success: function(xml) 
    { 
        $(xml).find("C").each(function(){ 
         $("#attr2").append($(this).attr('ID') + "<br />"); 
         arrayIds.push($(this).attr('ID')); 
        }); 

        for (i=0; i<arrayIds.length; i++) 
        { 
        alert(arrayIds.length); 
        $(xml).find("C[ID='arrayIds[i]']").(function(){ 
         // pass values 
         alert('test'); 
        }); 
        } 
    } 
    }); 
}); 

어떤 아이디어 : 여기

내 기능입니다?

답변

1

이 줄은 올바르지 않습니다. 함수 이름이 없습니다. 이것은 스크립트를 크래쉬하고 있습니다.

$(xml).find("C[ID='arrayIds[i]']").(function(){ 

은 (아마도)해야한다 :

$(xml).find("C[ID='" + arrayIds[i] + "']").each(function(){ // Note the added each 
+0

귀하의 제안으로 인해 'alert (arrayIds.length);' 올바른 횟수만큼 반복하고 실행하려면 'alert ('test ');' 내부 함수 내부는 어떤 이유로 실행되지 않았습니다. –

+0

선택기가 잘못되었습니다. 내 대답을 업데이트 할게. – user113716

+0

Matthews 최신 버전에서 문제가 해결 된 것 같습니다. 그래도 도움을 주셔서 대단히 감사합니다. –

1

그것은해야한다 : 당신은 리터럴 값 "arrayIds [I]"와 ID를 찾고 있었다 전에

$(xml).find("*[ID=" + arrayIds[i] + "]").each(function(){ 
    // pass values 
    alert('test'); 
}); 

. 또한 id는 고유하므로 C가 필요하지 않으며이를 표준 jQuery 구문으로 변경했습니다. 또한 Patrick이 말했듯이, 당신은 각각을 놓쳤습니다.

+0

귀하의 제안에 내 코드를 ammending 후, 어떤 행동의 변화와 나의 오류 콘솔이 없었다 XML 필터가 아닌 XML 값에 적용되는 '나에게 메시지 ... '. 추가 : 'each'를 추가했습니다. 패트 릭의 답은 루프가 올바르게 작동하도록하지만, 두 번째 경고를 트리거하기 위해 루프 내부에서 함수를 실행하는 데 여전히 문제가 있습니다. 아이디어가 있으십니까? 개인적으로이 오류에 익숙하지 않습니다. –

+0

''# '+ arrayIds [i]'는'ID'라는 속성이 스키마 타입'ID'으로되어 있음을 파서에 의존합니다. HTML 문서의 경우에는 그렇지만 XML의 경우에는 일반적으로 그렇지 않습니다. '[ID = ...]'속성 선택자는 * 필요하다. – bobince

+0

고마워, @bobince. 내 실수. –

관련 문제