Finden Sie Body-Tags in einer Ajax-HTML-Antwort
Mache ich einen ajax-Aufruf zum abrufen von Inhalt und fügen Sie diesen Inhalt wie diesem:
$(function(){
var site = $('input').val();
$.get('file.php', { site:site }, function(data){
mas = $(data).find('a');
mas.map(function(elem, index) {
divs = $(this).html();
$('#result').append('' + divs + '');
})
}, 'html');
});
Das problem ist, dass wenn ich a
im body
ich bekomme nichts (keine Fehlermeldung, einfach kein html-Code). Im vorausgesetzt, der Körper ist das tag nur wie ein 'a' ist? Was mache ich falsch?
Also das funktioniert für mich:
mas = $(data).find('a');
Aber nicht:
mas = $(data).find('body');
InformationsquelleAutor der Frage Youss | 2013-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Parsen der zurückgegebenen HTML-Code durch ein jQuery-Objekt (ich.e
$(data)
), um diebody
tag ist zum scheitern verurteilt, fürchte ich.Der Grund dafür ist, dass die zurückgegebenen
data
ist einstring
(versuchenconsole.log(typeof(data))
). Jetzt, nach die jQuery-Dokumentationbeim erstellen eines jQuery-Objekt aus einem string, der die komplexe HTML-markup-tags wiebody
sind wahrscheinlich entfernt. Dies geschieht da, um das Objekt zu erstellen, das HTML-markup ist eigentlich eingefügt, in der DOM, die nicht zulassen, dass solche zusätzlichen tags.Relevante Zitat aus die Dokumentation:
InformationsquelleAutor der Antwort Boaz
Landete ich mit dieser einfachen Lösung:
Funktioniert auch mit Kopf oder andere tag.
(Die Lösung mit dem xml-parsing-schöner wäre aber mit einer ungültigen XML-Antwort, die Sie haben zu tun, einige "string-Analyse".)
InformationsquelleAutor der Antwort Yush0
Experimentierte ich ein wenig, und haben festgestellt, dass die Ursache auf einen Punkt, also bis zu einer wirklichen Antwort, die, ich wäre daran interessiert, hier ist ein hack, um zu helfen, zu verstehen, das Problem
Edit: weitere Experimente
Es scheint, dass es möglich ist, laden Sie den Inhalt in ein iframe, dann können Sie Zugriff auf den frame-Inhalt durch einige dom-Objekt-Hierarchie...
Edit: mehr Forschung
Scheint es, dass contentDocument ist die, standards-konforme Weise auf die
window.document
element ein iFrame, aber natürlich ist der IE nicht wirklich für standards, das ist also, wie man eine Referenz auf das iFrame -window.document.body
Objekt in einer cross-Plattform-Weg,...Finden Sie unter: contentDocument für ein iframe
InformationsquelleAutor der Antwort Billy Moon
DACHTE ich, ETWAS WUNDERBARES (denke ich!)
Haben Sie Ihre html als string?
Hier ein jquery-Objekt, das funktioniert genau wie die Elemente, die derzeit an den DOM:
Wird nichts entfernt
superConvenient
! Sie können Dinge tun wiesuperConvenient.find('body')
oder sogarsuperConvenient
funktioniert genau so wie die jquery-Elemente für jedermann!!!!HINWEIS
In diesem Fall die Zeichenfolge
results
werden muss gültige XML -weil es zugeführt wird, um die JQuery -parseXML
Methode. Ein gemeinsames Merkmal der eine HTML-Antwort kann ein<!DOCTYPE>
tag, das würde die Unwirksamkeit des Dokuments in diesem Sinne.<!DOCTYPE>
tags müssen möglicherweise entfernt werden, bevor mit diesem Ansatz! Achten Sie auch auf features wie<!--[if IE 8]>...<![endif]-->
tags ohne schließende tags, z.B.:... und alle anderen features von HTML wird interpretiert, nachsichtig von den Browsern, sondern zum Absturz der XML-parser.
InformationsquelleAutor der Antwort Gershom Maes