Wie analysiere ich bestimmte Teile einer Seite mit der AJAX-Methode von JQuery?

8

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?

    
Kevin Wilson 20.12.2010, 00:05
quelle

5 Antworten

2

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%     
Brandon Joyce 23.12.2010, 09:47
quelle
0

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.

    
Kevin Wilson 20.12.2010 00:42
quelle
0

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.

    
jwiscarson 20.12.2010 01:07
quelle
0

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:

%Vor%

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):

  • Diese Lösung erfordert, dass Sie das HTML ändern können, das von 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 ).
  • Offensichtlich wird die eindeutige Zeichenfolge (z. B. guid oben) einmal ausgewählt und für immer ohne Änderung verwendet. Der springende Punkt ist, dass Sie wissen müssen, wonach Sie suchen müssen.
Jon 20.12.2010 01:03
quelle
0

Sie könnten eine Teilung vornehmen und dann eine Zeichenfolge ersetzen, bevor Sie sie einem jquery-Objekt hinzufügen.

%Vor%

Funktioniert mit gegebenem HTML:

%Vor%     
Eivind 20.12.2010 12:36
quelle

Tags und Links