구문 분석에서 jQuery AJAX 요청에서 HTML을 반환했습니다.
HTML 페이지를 연결하는 작업은 간단해 보입니다.$.ajax()
그리고 거기서 가치를 끌어내는 겁니다.
$(function () {
$.ajax({
url: "/echo/html",
dataType: "html",
success: function (data) {
$('#data').text(data);
$('#wtf').html($(data).find('#link').text());
},
data: {
html: '<!DOCTYPE html><head><title><\/title><link href="../css/popup.css" rel="stylesheet" /><\/head><body><ul><li><a id="link">content<\/a><\/li><\/ul><\/body><\/html>'
}
});
});
문제는 jQuery가 반환된 HTML 구문 분석을 거부한다는 것입니다.
제가 이걸 가지고 연주하는 바이올린이 그동안 작동하지 않아서, 제가 할 수 있는 일이 거의 없어요.
업데이트: 새 바이올린은 잘 작동하지만 실제 프로젝트에서 크고 복잡한 HTML 부분을 구문 분석하려고 하는 것이 문제인 것 같습니다. 알려진 문제입니까?
코드는 잘 작동합니다.jsFiddle의 API를 제대로 사용하지 않는 것뿐입니다.문서를 확인합니다./echo/html/
(http://doc.jsfiddle.net/use/echo.html#html) :
URL: /echo/html/
POST를 통해 데이터를 제공해야 합니다.
따라서 POST를 사용하려면 AJAX 호출을 업데이트해야 합니다.또한 후행 슬래시가 필요합니다.
$(function () {
$.ajax({
url: "/echo/html/",
type: "post",
dataType: "html",
success: function (data) {
$('#data').text(data);
$('#wtf').html($(data).find('#link').text());
},
data: {
html: '<!DOCTYPE html><head><title><\/title><link href="../css/popup.css" rel="stylesheet" /><\/head><body><ul><li><a id="link">content<\/a><\/li><\/ul><\/body><\/html>'
}
});
});
데모: http://jsfiddle.net/hcrM8/6/
파싱을 하고 싶다면 jquery는 훌륭한 트릭을 가지고 있습니다 :)
ParsedElements = $(htmlToParse);
Console.log(ParsedElements);
당신은 지금 가지고 있습니다.DOM
요소를 문서 본문에 배치하지 않고도 횡단할 수 있습니다.
jQuery.parseHTML()
str = "hello, <b>my name is</b> jQuery.",
html = $.parseHTML( str ),
nodeNames = [];
// Gather the parsed HTML's node names
$.each( html, function( i, el ) {
nodeNames[ i ] = "<li>" + el.nodeName + "</li>";
});
당신의 아약스가 잘못됐어요
var html= '<!DOCTYPE html><head><title><\/title><link href="../css/popup.css" rel="stylesheet" /><\/head><body><ul><li><a class="disabled" id="link">content<\/a><\/li><\/ul><\/body><\/html>';
h = $.parseHTML(html);
$('#data').text(h);
$('#wtf').html($(h).find('#link').text());
그냥 하중법을 사용하는 게 어때요?
$( "#wtf" ).load( "/echo/html #link" );
아니면, 여기에 당신의 바이올린이 고정되어 있습니다.
저도 같은 문제가 있어서 요청한 html 코드를 단지 하나의 컨테이너 요소로 캡슐화하는 것을 고쳤습니다.
나쁜 예:
<a href="link">Linkname</a>
<p>Hello world</p>
Jquery는 단일 요소 트리를 변환하려고 하기 때문에 이를 요소로 변환할 수 없습니다.하지만 그것들은 용기를 가지고 있지 않습니다.다음 예제가 작동해야 합니다.
올바른 예제:
<div>
<a href="link">Linkname</a>
<p>Hello world</p>
</div>
모든 답변이 실제 문제를 가리키는 것은 아닙니다. jQuery는 머리와 몸통 태그를 무시하고 노드 배열을 만드는 것 같습니다.당신이 평소에 원하는 건 시체를 추출해서 파싱하는 거죠
이 도움이 되는 답변을 보세요, 저는 그의 작품인 https://stackoverflow.com/a/12848798/2590616 을 베끼고 싶지 않습니다.
저도 같은 문제에 직면해 있고, 당신이 잘못해서 그런 것은 아닙니다.
왜냐하면 "링크" 태그에는 내부가 없어야 하기 때문입니다.HTML이 반환되었습니다. jquery에서 명시적으로 제외되어 있습니다. 다음 줄이 있는 곳을 찾을 수 있습니다.
rnoInnerhtml = /<(?:script|style|link)/i,
HTML의 이 태그는 외부 스타일시트와 연결되도록 되어있습니다.
언급URL : https://stackoverflow.com/questions/20007721/parsing-returned-html-from-jquery-ajax-request
'sourcecode' 카테고리의 다른 글
정렬 목적으로 두 문자열을 알파벳 순으로 비교 (0) | 2023.09.10 |
---|---|
도커가 Windows에서 실행 중인지 확인하는 방법은 무엇입니까? (0) | 2023.09.10 |
XML, HTML 및 XHTML 문서에 유효한 내용 유형 (0) | 2023.09.10 |
오류 2002(HY000):소켓 '/var/lib/mysql/mysql'을(를) 통해 로컬 MySQL 서버에 연결할 수 없습니다.sock' (111 "연결 거부") centos 6 (0) | 2023.09.10 |
문서를 사용하는 HTML에 javascript를 동적으로 삽입합니다.글을 쓰다 (0) | 2023.09.10 |