2010-11-24 3 views
3

, 나는 append, empty, remove와 그것을 시도하지만, 그들 모두는 ($ 아약스에 ) 같은 작동하지 않을 것 같다 :

success:function(xml){ 
    $(xml).find("layout").append('<app id="' + $children.eq(i).attr("id") + '"></app>'); 
    $(xml).find("layout").empty(); 
} 

또한 Google에 대한 자습서가 없습니다. 그래서 jquery를 사용하여 xml에 노드를 추가하거나 삭제할 수 있습니까? OK

, 나는 세부 사항에 쓰기 xml 파일 그냥 데이터베이스/UserConfig를/config.xml에 같은 지역 도메인에 저장 여기 내 Ajax 코드입니다 :

function layout_change() 
{ 
    var $children=$input.children(); 

    $.ajax({ 
     type: "get", 
     url: "Database/UserConfig/config.xml", 
     dataType: "xml", 
     timeout: 2000, 
     beforesend:function(xml){ 
      $(xml).find("layout").empty(); 
     }, 
     success:function(xml){ 
      for(var i=0;i<$children.length;i++) 
      { 
       $(xml).find("layout").append('<app id="' + $children.eq(i).attr("id") + '"></app>');    
      } 
     }, 
     error:function(){} 
    }); 
} 

또는이 될 수 있습니다 자바 스크립트로 수행 또는 만 C#을 같은 서버 언어 수행 할 수 있습니다 ...... 여기

내 데모 XML된다?

<layout> 
     <app id="id-4"></app> 
     <app id="id-5"></app> 
     <app id="id-6"></app> 
     <app id="id-1"></app> 
     <app id="id-2"></app> 
     <app id="id-3"></app> 
</layout> 
,
+1

당신이 자바 스크립트로 뭔가를 할 수 있다면, 할 수있는 높은 기회가 있습니다 ... jquery – kobe

+0

하지만 당신은 작성하거나 XML 파일, 자바 스크립트에서 텍스트 파일을 업데이트해서는 안된다, 좋은 접근 방식, 자바 스크립트입니다 주로 DOM 조작, 데이터 반입 및 표시, 데이터 전송 – kobe

+0

xml 파일을 볼 수 있습니까? – Alex

답변

8

jQuery는 javascript에서 XML을 구문 분석하고 조작하는 환상적인 도구입니다. 실제로 jQuery의 ajax API는 이것을 염두에두고 작성되었으므로 dataType 인수를 xml으로 설정하여 (이 인수가 자동 감지를 시도하지만) 응답 유형을 지정할 수 있습니다. 생략 됨).

"XML"다음 dataType 인수의 jQuery를 $.ajax() 문서에서 jQuery를 통해 처리 할 수있는 XML 문서를 반환합니다.

jQuery를 사용하여 원하는만큼 XML을 구문 분석하고 조작 할 수 있습니다. CSS 선택기를 사용하는 것이 서버 측 XML 라이브러리의 XPath 쿼리와 비교하여 훌륭하다는 것을 추가해야합니다. (난 정말이 파고하지 않은 경우) 어떤 이유로, jQuery를 당신을 위해 요소를 생성하지 않습니다

empty 예상대로 remove 일 동안, append 같은 기능을 즉석에서 노드를 추가 할 때 잡았다있다 XML 구조에 추가 할 때 (HTML 구조에서는 잘 작동하지만). 명시 적으로 append 호출 한 후 DOM 요소 또는 jQuery를 객체로 노드를 직접 작성하고 쉽게이 문제를 얻을 수 있습니다 : 그것은을 방지 할 것 코드에 다른 문제가 있다는 점처럼 보이는

//Either of these will work 
var elem = document.createElement('app'); 
xml.find('layout').append(elem); // Appends <app></app> to <layout> 
xml.find('layout').append($('<app>')); // Does the same 

// You can also you use other manipulation functions such as `attr` 
xml.find('layout').append($('<app>').attr('id', 'ego')); 

예상대로 행동하지 못하게한다. 예를 들어 $.ajaxbeforeSend 콜백은 XMLHttpRequest 개체를 조작 할 XML 개체가 아니라 콜백 함수로 전달합니다. 그 결과 해당 콜백에서 empty 호출이 수행되지 않습니다.

또한 beforeSend 콜백에서 Database/UserConfig/config.xml의 응답을 조작하려는 경우 Ajax 요청이 시작되기 전에 beforeSend이 호출되기 때문에 아직 존재하지 않을 것입니다. 전달하려는 xml 인수가 전 세계적으로 범위를 가질 수도 있지만 jQuery가 앞서 언급 한대로 XMLHttpRequest을 전달하기 때문에 콜백 범위에서 부숴졌습니다.

+0

대단히 감사합니다. 나 많이! – hh54188

관련 문제