Parsen Sie die komplette HTML-Seite mit jquery

Lesezeit: 4 Minuten

Parsen Sie die komplette HTML Seite mit jquery
Mark Baijens

Ich lade ein HTML mit Ajax. Ich möchte das Ergebnis in ein jquery-Objekt laden. Ich habe das versucht, aber es gibt null zurück. Wie kann ich das machen? Ich habe eine komplette Seite mit Doctype, Head-Elementen und Body-Elementen erhalten.

var test = $(result); //result contains html code
alert(test.html()); //returns null

Ich lade die Daten mit dieser Funktion.

function ajaxLoadContent(element) {
    $.ajax({
        url: "url to the page",
        type: "GET",
        timeout: 5000,
        datattype: "html",
        success: function(result) {
        //handler
        },
    });
    return false;

  • Ergebnis ist wahrscheinlich nur eine Zeichenfolge

    – Jäger

    13. Dezember ’10 um 14:40

  • Können Sie zeigen, wie Sie die Daten in result? Auch alert(result); HTML in der Benachrichtigung anzeigen? Einfach html in eine Variable wie diese zu laden, führt nicht automatisch dazu, dass die .html()-Funktion html zurückgibt. Ihre Ergebnisvariable kann bereits html sein.

    – Josh

    13. Dezember ’10 um 14:41

  • Warum das Ergebnis nicht einfach ausdrucken? Dies sollte Text sein.

    – WaiLam

    13. Dezember ’10 um 14:41

  • @Josh, die Funktion zum Aufrufen der Seite zum Beitrag hinzugefügt. Ja, der HTML-Code wird in der Benachrichtigung angezeigt, wenn ich dies tue alert(result).

    – Mark Baijens

    13. Dezember ’10 um 14:50

  • @WaiLam Ich möchte einige Änderungen vornehmen, bevor ich den HTML-Code auf meiner Seite verwende.

    – Mark Baijens

    13. Dezember ’10 um 14:51

Parsen Sie die komplette HTML Seite mit jquery
lrsjng

Es ist schon eine Weile her, aber vielleicht interessiert es dich immer noch..

Die interne Umsetzung von $(String) kann kein jQuery-Objekt erstellen, das enthält head oder body Stichworte. Es ignoriert sie einfach und verschiebt alle Elemente nach innen auf der Ebene nach oben.

Also, wenn deine Zeichenfolge zum Beispiel ist

<html>
  <head>
    <meta ...>
  </head>
  <body>
    <div id="a"/>
  </body>
</html>

Das resultierende jQuery-Objekt ist ein Array aus zwei Elementen

[<meta ...>, <div id="a" />]

einen bekommen body-like jQuery-Objekt schneidet alles außer dem Body-Inhalt aus, bevor es an jQuery übergeben wird:

body = '<div id="body-mock">' + html.replace(/^[sS]*<body.*?>|</body>[sS]*$/ig, '') + '</div>';
var $body = $(body);

jetzt funktioniert alles wie erwartet.. zum Beispiel

$body.find('#a')

Hoffentlich hilft das..

  • Warum wurde diese Antwort nicht akzeptiert? Bewahre mich vor vielen Kopfschmerzen. Danke!

    – Xaver

    7. November ’14 um 16:34 Uhr

  • Warum kann jquery den Kopf und den Körper nicht analysieren?

    – nbrusstein

    1. Februar ’16 um 21:46

  • Lebensretter! Danke schön!!

    – Graues Spektrum

    20. September 19 um 14:49

test ist nur ein HTML-String, also können Sie dies einfach tun, um den Inhalt anzuzeigen

alert(result);

und wenn Sie das an ein Element binden möchten

$("#myDiv").html(result);

  • Ich möchte in der Lage sein, einige jquery-Funktionen für den Rückgabewert zu verwenden.

    – Mark Baijens

    13. Dezember ’10 um 14:52

  • Da result nur ein String ist, müssen Sie ihn wahrscheinlich auf der Seite platzieren, bevor Sie mit jQuery damit interagieren können.

    – Jäger

    13. Dezember ’10 um 14:56

  • Mzz, als ich es in einem versteckten iframe ablegen muss, denke ich. Das wäre böse. Wahrscheinlich besser, eine Out-of-the-Box-Lösung zu entwickeln.

    – Mark Baijens

    13. Dezember ’10 um 15:00


  • Versuchen Sie, HTML zu laden und das HTML auf der Seite vollständig zu überschreiben? Wenn ja, warum navigieren Sie nicht einfach zu dieser Seite? 😉

    – Jäger

    13. Dezember ’10 um 15:17

  • Lassen Sie mich genau wissen, was Sie mit dem HTML-Code machen möchten, sobald er zurückkommt, und ich kann Ihnen vielleicht helfen

    – Jäger

    13. Dezember ’10 um 15:18

function ajaxLoadContent(element) {
$.ajax({
    url: "url to the page",
    type: "GET",
    timeout: 5000,
    datattype: "html",
    success: function(data) {
     var result = $(data);
    },
});
return false;

Sie sollten das Ergebnis jetzt wie folgt aufrufen können (denken Sie daran, dass es noch nicht zum DOM hinzugefügt wurde):

alert(result.html());

Zum DOM hinzufügen

result.appendTo("body");

Lass mich wissen, ob das für dich funktioniert.

  • Nein, das funktioniert nicht, da der HTML-Code, den ich bekomme, Head-, Body-Tags und sogar einen Doctype enthält.

    – Mark Baijens

    14. Dez. 10 um 22:08

  • ok ändern Sie es in: var result = data; $(“html”).html(Ergebnis); Lass mich wissen ob es funktioniert?

    – halb vier.am

    16. Dezember ’10 um 19:16


  • Ich habe auch Zugriff auf die Kopfelemente. Diese Arbeit gilt aber nur für body-Elemente und das title-Element.

    – Mark Baijens

    17. Dez. ’10 um 17:41

Versuchen Sie es load Methode des jQuery-Objekts: http://api.jquery.com/load/

Laden Sie Daten vom Server und platzieren Sie den zurückgegebenen HTML-Code in dem übereinstimmenden Element.

.

265250cookie-checkParsen Sie die komplette HTML-Seite mit jquery

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy