Ich versuche herauszufinden, wie bestimmte Teile einer Seite mit JQuerys AJAX-Methode analysiert werden. Was ich gerne tun würde, ist etwa so:
%Vor%Ich weiß, dass ich bestimmte Seitenbereiche mit [container] .load () laden kann, aber dies wird (soweit ich es verstehe) eine Anfrage für jeden zu ladenden Seitenbereich erzeugen.
In meinem Beispielcode scheint das HTML-Objekt ein Array von HTML-Elementen zu sein, aber jedes von find () zurückgegebene Objekt ist null. Die gesuchten Elemente existieren auf der Zielseite.
Fehle ich etwas Offensichtliches oder ist das einfach nicht etwas, mit dem JQuery umgehen kann?
Das funktioniert. Verwenden Sie .load mit der speziellen URL-Syntax, um den gewünschten Teil der Seite in ein temporäres div zu laden. Verwenden Sie den inneren HTML-Code für das, was Sie wollen.
%Vor%Hier ist ein Beispiel ohne die URL-Syntax, so dass Sie mit der gesamten Seite arbeiten können. Sie können den Titel herausziehen, wie Sie es in Ihrer Frage versuchen ...
%Vor%Tatsächlich, fand ein Problem innerhalb der Antwort auf eine andere Frage hier: Warum kann dieser jQuery meine HTML-Zeichenfolge nicht laden / analysieren?
Aus der Dokumentation:
Die HTML-Zeichenfolge kann nicht enthalten Elemente, die innerhalb von a ungültig sind div, wie HTML, Kopf, Körper oder Titelelemente.
Wenn Sie einen vollständigen HTML-Code abrufen Dokument, dann wirst du viele haben Elemente, die möglicherweise nicht in einem Div erscheinen.
antwortete 18. September 09 um 11:53 David Dorward
Sieht so aus, als ob es dann unmöglich sein könnte. Dang.
Zusätzlich zu Ihrer Aussage zeigen die Kommentare zur .find()
-Dokumentation, dass Sie diese Aktion nur ausführen können, wenn Der HTML-Code ist ein Teil des DOM auf Ihrer aktuellen Seite. Dies deutet darauf hin, dass, wenn Sie alle diese Daten in eine versteckte div
stecken und dann versuchen, Aufruf suchen, erhalten Sie die gewünschten Ergebnisse.
Ich würde es sicherlich nicht als unmöglich bezeichnen.
Die allererste Lösung, die einem einfällt, ist, so etwas zu tun:
1) Fügen Sie nach dem Öffnen und unmittelbar vor dem Schließen des <body>
-Tags HTML-Kommentare in Ihre Ausgabe ein. Diese Kommentare sollten eine eindeutige Zeichenfolge enthalten, damit Sie danach suchen können. Eine für diesen Zweck erzeugte Guid wäre eine gute Wahl. Zum Beispiel:
2) Nachdem Sie die Antwort erhalten haben, suchen Sie sie nach den beiden Instanzen von <!-- BODY: 3F2504E0-4F89-11D3-9A0C-0305E82C3301 -->
. Trimmen Sie die Zeichenfolge so, dass alles vor der ersten und nach der zweiten Instanz gelöscht wird.
3) Sie haben jetzt eine Zeichenfolge, die nur Elemente innerhalb eines <div>
enthält.
Der Nachteil dieser Methode ist, dass Sie den Zugriff auf Elemente außerhalb von <body>
verlieren, zum Beispiel <title>
(da Sie es erwähnen). Sie müssen eine andere Möglichkeit finden, diese Informationen weiterzuleiten. Es gibt wirklich zu viele Möglichkeiten, dies zu tun, also wähle dein Gift.
Aktualisieren (Notizen):
page-to-load.html
erzeugt wurde (mit anderen Worten, es muss der Code sein, den Sie besitzen). Wenn dies nicht der Fall ist, wäre es eine Möglichkeit, nach <body>
und </body>
selbst zu suchen, aber das würde Bug-anfällig sein ( HTML mit regulären Ausdrücken analysieren ). Tags und Links jquery