2012-01-11 3 views
1

웹 페이지를 다운로드하고 본문을 추출하려고합니다.jquery html returns null

나는 다음과 같은 코드가 주어 :

$.ajax({ 
    url: someAccessiblePublicUrlOnSameWebServer, 
    dataType: 'html', 
    success: function (data) { 
     //data is correct at this point 

     var body = $(data).find('body').html(); 

     //body is null. why ? 
    } 
}); 

success가 호출 data이 예상 HTML을 포함하지만 body 항상 널됩니다. 왜 ?

+0

실제 코드입니까? 빈'body' 변수를'.find()'에 넘깁니다. –

+0

'data'가 전체 HTML 문서 인 경우 일부 브라우저에서는 ''요소를 찾으려고하는데 문제가 있습니다. –

답변

2
$.ajax({ 
    url: someAccessiblePublicUrl, 
    dataType: 'html', 
    success: function (data) { 
     var body = $(data).find('body').html(); 

    } 
}); 
+0

오타가 있지만 여전히 같은 문제가 수정되었습니다. –

1

거기에 오타가있을 수 있습니다. 몸 주위에 하나의 틱

var body = $(data).find('body').html(); 

참고 :

는 다음과 같은 의미입니까?.

+0

유형을 수정했지만 여전히 동일한 문제가 있습니다. –

+0

결과 (데이터 변수)에 태그가 있습니까? – Dan

0

오타가 아니라면 find 메서드 내부의 "본문"주위에 따옴표가 필요합니다.

IE는 : var body = $(data).find('body').html();

문제가 될 수있다.

+0

유형이 수정되었습니다. 여전히 같은 문제가 있습니다. –

+0

@ChristofJans 이상한. 나는 그 문제를 안다. 나는 var content = $ (data) .contents() var body = contents [1]을 사용하는 해결 방법을 발견했다. 물론 이것은 페이지 xhtml의 구조에 달려있다. –

0

마지막 응답에 대한 수정.

체크 아웃이 스레드가 사용 parse html string with jquery

, 나는이

VAR 본체 = $ ("몸", $ (데이터)) 일 것이라고 생각 HTML을().;

1

Ajax 호출을 통해 HTML을로드하면 데이터를 문자열로 반환하므로 일반 jQuery 선택기를 응답에 적용 할 수 없습니다. 데이터를 $ (data)로 변환하면 $ (data)가 본문 내용 모음 (jQuery internal clean() 메서드로 제거됨)이므로 본문에 액세스 할 수도 없습니다. 당신은 단지 문서에 어딘가에로드 된 HTML의 몸을 추가하려면

당신은이 작업을 수행 할 수 있습니다 :

$.get('http://your_url', function(data) { 

        $('.result').html(data); 

       }); 

이 의지 당신은 몇 가지 옵션을 사용하면 결과 수행 할 작업에 따라이 본문 내용 만 .result 컨테이너에로드하십시오. 추가 처리를 원할 경우 거기에서 선택기에 액세스 할 수 있습니다.

첨부되지 않은 단편을 조작하려는 경우 필터 & get을 사용하여 요소에 액세스 할 수 있습니다.

$(data).filter('p').get() //will get all para DOM nodes 
$($(data).filter("#test2").get()).text() //will get text of one specific dom node 

당신이 XML로 처리 할 빠르게 수 있습니다 몸의 데이터를 처리 할 경우 또 다른 옵션 - http://think2loud.com/224-reading-xml-with-jquery/에서 XML 처리 룩. 예를 들면 다음과 같습니다.

$.ajax({ 
         url : "http://mypage", 
         dataType : 'xml', //change dataType to XML 
         success : function(data) { 
          //data is correct at this point 
          $(data).find('html').each(function() { 
//here you can find whatever you want        
a = $(this).find("body") 
           console.log(a); 

          }) 
         } 
        })