2011-08-23 9 views
5

내가 jQuery로 Ajax 요청을 호출하고됩니다.변환 HTML은 이상한 합병증

반환 된 HTML 코드가 보이는 같은 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"> 
<head> 
    <title>Title</title> 
    <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" /> 
    <meta name="description" content="Mobilna wersja serwisu GoldenLine." /> 
    <meta name="keywords" content="praca, networking, forum, blog, bran?a" /> 
    <link rel="stylesheet" type="text/css" href="http://css.goldenline.pl/mobile.css" /> 
    <link rel="shortcut icon" href="http://x/favicon.ico" /> 
</head> 
<body> 
    <h1><a id="h" href="http://x/"><img src="http://x/img/mobile.gif" alt="GoldenLine" /></a></h1> 
    <h2>Moje grupy</h2> 
    <ul> 
     <li> 
      <img src="http://x/img/ico-post.png" alt="" /> 
      <a href="http://x/forum/estimating-software">estimating software</a> 
     </li> 
     <li> 
      <img src="http://x/img/ico-post.png" alt="" /> 
      <a href="http://x/forum/google-hacking">Google hacking</a> 
     </li> 
     <li> 
      <img src="http://x/img/ico-post.png" alt="" /> 
      <a href="http://x/forum/google-plus">Google Plus</a> 
     </li> 
     <li> 
      <img src="http://x/img/ico-post.png" alt="" /> 
      <a href="http://x/forum/praca-dla-informatykow">IT – Praca dla osób z...</a> 
     </li> 
     <li> 
      <img src="http://x/img/ico-post.png" alt="" /> 
      <a href="http://x/forum/jezyki-skryptowe">Języki Skryptowe</a> 
     </li> 
     <li> 
      <img src="http://x/img/ico-post.png" alt="" /> 
      <a href="http://x/forum/netcamp">Netcamp</a> 
     </li> 
    </ul> 
    <p class="setAsRead"><a href="http://x/fora/ozn">Ozn</a></p> 
    <form method="get" action="http://x/szukaj"> 
     <input type="text" name="q" /> 
     <input type="submit" value="Szukaj" /> 
    </form> 
    <ul> 
     <li>1. <img src="http://x/img/msg_box_ico.gif" alt="" /> <a href="http://x/skrzynka" accesskey="1">Skrzynka [0]</a></li> 
     <li>2. <a href="http://x/kontakty" accesskey="2">Kontakty</a></li> 
     <li>3. <a href="http://x/forum" accesskey="3">Moje grupy</a></li> 
     <li>4. <a href="http://x/wylogowanie" accesskey="4">Wyloguj</a></li> 
    </ul> 
    <div class="footer"> 
     <p>2010 &copy; Goldenline.pl | <a href="http://x/www">przejdź do normalnej wersji serwisu</a></p> 
    </div> 
</body> 
</html> 

하지만 객체

$(data) 

내가 이런 걸 가지고로 변환 할 때 : I가 무엇을해야

[ 
<!--?xml version="1.0" encoding="UTF-8"?-->, 
Text, 
<title>?GoldenLine.pl?</title>?, 
Text, 
<meta http-equiv=?"content-type" content=?"application/?xhtml+xml;? charset=utf-8">?, 
Text, 
<meta name=?"description" content=?"Mobilna wersja serwisu GoldenLine.">?, 
Text, 
<meta name=?"keywords" content=?"praca, networking, forum, blog, bran?a">?, 
Text, 
<link rel=?"stylesheet" type=?"text/?css" href=?"http:?/?/?css.goldenline.pl/?mobile.css">?, 
Text, 
<link rel=?"shortcut icon" href=?"http:?/?/?m.goldenline.pl/?favicon.ico">?, 
Text, 
<h1>?…?</h1>?, 
Text, 
<h2>?Moje grupy?</h2>?, 
Text, 
<ul>?…?</ul>?, 
Text, 
<p class=?"setAsRead">?…?</p>?, 
Text, 
<form method=?"get" action=?"http:?/?/?m.goldenline.pl/?szukaj">?…?</form>?, 
Text, 
<ul>?…?</ul>?, 
Text, 
<div class=?"footer">?…?</div>?, 
Text, 
<script type=?"text/?javascript">?…?</script>?, 
Text 
] 

을 Ajax 요청에서이 코드 조각에 일치하는 <ul> 요소가 반환됩니까?

답변

7

난 당신이 먼저 하나의 HTML 요소에 반환 된 HTML 데이터를 삽입해야한다고 생각합니다.

var mytag=$('<div></div>').html(data); 

이제 jQuery를 사용하면 모든 ul 노드를 추출 할 수 있습니다.

$('ul',mytag); 

모든 ul 태그의 배열을 반환합니다.

+0

물론이 경우에는 작동하지만 다른 웹 페이지의 HTML 코드를 객체로 변환하면 잘 작동합니다. 이 경우. div에 전체 html을 포장하는 것은 약간 무례한 방법입니다. – hsz

+0

좋아, 나는 그것에 대한 두 번째 기회를 준 그것은 잘 작동;) – hsz

+0

친애하는 hsz ... 'ul'태그를 찾는 귀하의 접근 방식은 완벽했습니다. 하지만 한 가지 경우에만 작동하고 다른 경우에는 작동하지 않는다고 말한 것입니다. 그 이유를 분명히하겠습니다. 그 이유는 jQuery (데이터)를 사용하여 객체를 만들 때 노드의 계층 구조를 만들고 'ul'과 같은 노드를 찾으면 루트 요소를 제외한 전체 계층을 검색하고 'ul'태그는 루트 요소입니다 . 하위 요소를 검색하면 결과가 긍정적입니다. 그래서 당신의 방식으로 솔루션을 - jQuery ('

') .append (jQuery (data)). find ('ul') 그리고 그것은 당신에게 완벽한 결과를 다시 줄 것이다. – vicky

1

반환 형식이 html이 아니며 JSON과 유사합니다. 내가 할 것

$.get(url, function(data){ 
    $(data).find('ul'); 
}, "html"); 

그다음에 의해 HTML을 적용하려고하면 서버 응답의 Content-Type이 (방화 광 또는 뭔가 유사한 사용)되는 것을 볼 수있다. 거기에 text/html라고해야합니다. 그렇지 않다면 문제는 아마도 백엔드에있을 것이므로 Content-Type을 올바르게 설정해야합니다.

내 컴퓨터에서 시도했는데 Content-Type이 정상인 경우 jQuery.gethtml을 적용하지 않고 매력처럼 작동합니다.

+0

그래도 작동하지 않습니다. 여전히 동일한 결과입니다. – hsz

+0

@hsz : 내 편집 참조, 도움이됩니까? – emboss

+0

요청하는 동안 content-type을 설정하려했지만 도움이되지 않았습니다. 이전과 같은 방식으로 작동합니다. 'user907376' 솔루션이 작동하지만 매우 무례한 방법입니다. – hsz