2010-11-29 6 views
0

내 페이지는 현재 페이지의 div 내에 표시하려면 다른 페이지에서 특정 div를 가져와야합니다. $.load의 경우 완벽하게 작동합니다. 단, HTML 소스를 가져 오는 것이 반드시 올바른 형식은 아니며 가끔씩 태그 오류가있는 것으로 보이며 IE는이 경우이 코드를 사용하지 않습니다. 그래서 나는 $.get으로 변경하여 페이지의 HTML 소스를 문자열로 가져 왔습니다. 그것을 DOM으로 구문 분석하기 위해 $에 전달하면 $.load과 IE에서 같은 문제가 있으므로 그렇게 할 수 없습니다. 내 div#information의 내용을 찾으려면 HTML 문자열을 구문 분석하는 방법이 필요하지만 </div> 이후 페이지의 나머지는 찾지 않아야합니다. (div#information은 다양한 div 's 및 요소를 포함 나의 PS.)jQuery에서 HTML 응답 구문 분석

편집 : 사람이 jQuery의 $.load IE에서 응답 HTML을 구문 분석 할 수 없다는 대한 수정 프로그램이 있습니다 또한, 내가 너무 듣고 싶어요.

+0

대부분의 브라우저가 잘못 형성 HTML로 괜찮 html로 선택을 허용 $.load 매개 변수를 시도 할 것입니다. IE가 실제로 실패한 샘플을 게시 할 수 있습니까? – casablanca

+0

꽤 큰 페이지입니다. 오류의 정확한 위치는 모르겠지만 모든 신호가 그 원인을 가리키고 있습니다. 그렇다면 다시 완전히 틀릴 수 있습니다. – pettazz

+0

잘못된 HTML을 게시하십시오. jQuery가 잘 수행 할 수 있어야합니다. 렌더링 엔진은 $ .load ...에 의한 구문 분석에 관여하지 않습니다. – Drew

답변

1

로드하려는 리소스가 제어 할 수있는 경우 구현 사양이 제대로 최적화되지 않았습니다. 작은 크기의 콘텐츠 만 필요로 할 때 서버에 전체 콘텐츠 페이지를 요청하고 싶지는 않습니다.

원하는 콘텐츠를 분리하고 필요한만큼만 서버를 반환하십시오.

HTML 형식이 잘못되었음을 알고 있기 때문에 글 머리 기호를 물고 마크 업의 유효성을 검사해야합니다. 그러면 장래에 (이렇게) 몇 가지 문제를 줄일 수 있습니다.

마지막으로,이 프로세스를 최적화 할 수 없다면, 구문 분석 된 HTML의 일부 요소가 현재 페이지의 요소와 동일한 ID를 가지므로 불일치가 발생하는 것 같습니다. 동일한 ID가 잘못되어 많은 브라우저 JavaScript 문제가 발생합니다.

+0

나는 이것에 동의하지만, 불행히도 옵션이 아니다. – pettazz

+0

설명해 주시겠습니까? 항상 방법이 있습니다. ;) – Stephen

+0

내 데이터가 아니므로 이미 가져온 API가 없기 때문에 이미 존재하는 HTML 페이지에서 가져옵니다. – pettazz

0

엄밀히 말하면 정규 표현식을 사용하여 id="information" 태그 내용을 찾을 수 있습니다. html로 구문 분석하지 마십시오.

은 나뿐만 아니라

$('#results').load('/MySite/Url #Information'); 
+0

이것은 HTML 응답을 얻지 만 * div. 정보를 찾을 수없는 IE를 제외한 모든 부분에서 저에게 효과적이었습니다. $ .get 및 $ .find를 사용하여 더 명확하게 작성한 경우에도 – pettazz