sourcecode

구문 분석에서 jQuery AJAX 요청에서 HTML을 반환했습니다.

codebag 2023. 9. 10. 12:13
반응형

구문 분석에서 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()

http://api.jquery.com/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>";
});

당신의 아약스가 잘못됐어요

http://jsfiddle.net/hcrM8/5/

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" );

아니면, 여기에 당신의 바이올린이 고정되어 있습니다.

http://jsfiddle.net/hcrM8/4/

저도 같은 문제가 있어서 요청한 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

반응형