2013-09-21 8 views
22

Ich verwende jQuery's Ajax-Code, um neue Seiten zu laden, wollte aber, dass er nur den HTML-Code eines divs bekommt.Wie bekomme ich die HTML eines div auf einer anderen Seite mit jQuery ajax?

Meine Codes: HTML:

<body> 
    <div id="content"></div> 
</body> 

Script:

$.ajax({ 
    url:href, 
    type:'GET', 
    success: function(data){ 
     $('#content').html(data); 
    } 
}); 

Ich wollte ihn nur den HTML-Code $ ('div # content') auf einer anderen Seite zu bekommen. Wie es geht?

Antwort

1

Sie wirklich nicht tun kann, ist eine Ajax-Anforderung, die gesamte Datei bekommt, aber Sie können den Inhalt filtern, wenn sie abgerufen hat:

$.ajax({ 
    url:href, 
    type:'GET', 
    success: function(data) { 
     var content = $('<div>').append(data).find('#content'); 
     $('#content').html(content); 
    } 
}); 

Beachten Sie die Verwendung eines Dummy-Element als find() nur mit Nachkommen arbeitet und findet keine Root-Elemente.

oder lassen jQuery es Filter für Sie:

$('#content').load(href + ' #IDofDivToFind'); 

Ich gehe davon aus diese Anforderung keine Cross-Domain ist, wie das wird nicht funktionieren, nur die Seiten auf der gleichen Domain.

+0

Ja habe ich versucht, diese Methode aber nicht den richtigen Filter. –

36

Ok, Sie sollten den HTML-Code "konstruieren" und finden Sie die .content div.

wie folgt aus:

$.ajax({ 
    url:href, 
    type:'GET', 
    success: function(data){ 
     $('#content').html($(data).find('#content').html()); 
    } 
}); 

einfach!

+0

Tun Sie dies nicht, da dies dazu führt, dass Skripte möglicherweise von der anderen Seite ausgeführt werden - es ist ein seltsames Problem, das Sie möglicherweise nicht betrifft, aber ich empfehle die Verwendung von .load, wodurch die Skripts entfernt werden. Ala 'var loadHolder = $ ('

'); loadHolder.load (href + '#content', function() { $ ('# content'). LoadHolder.find ('# content'). Html()) }) ' – Shadaez

20

Sie verwenden JQuery .load() -Methode:

http://api.jquery.com/load/

$("#content").load("ajax/test.html div#content"); 
+0

Perfekt! Irgendeine Idee, wie man es bekommt, um Bilder richtig zu laden, die einen Wurzellink '/' anstelle des relativen '../' oder absoluten 'http: // example.com /' bekommen? Wie können Sie die Bilder auf eine andere Website laden? – fredsbend

11

Wenn Sie Inhalte aus verschiedenen Domain suchen diese den Trick tun wird:

$.ajax({ 
    url:'http://www.corsproxy.com/' + 
     'en.wikipedia.org/wiki/Briarcliff_Manor,_New_York', 
     type:'GET', 
     success: function(data){ 
      $('#content').html($(data).find('#firstHeading').html()); 
     } 
}); 
+0

hey, es ist Briarcliff !! : D Ich komme aus White Plains – Sticky

+0

Dies führt dazu, dass Skripte von der anderen Seite potenziell ausgeführt werden - es ist ein seltsames Problem, das Sie möglicherweise nicht betrifft, aber ich empfehle .load verwenden – Shadaez

2
$.ajax({ 
    url:href, 
    type:'get', 
    success: function(data){ 
    console.log($(data)); 
    } 
}); 

Dieses Konsolenprotokoll erhält ein arrayähnliches Objekt: [meta, title,,], sehr seltsam

können Sie JavaScript verwenden:

var doc = document.documentElement.cloneNode() 
doc.innerHTML = data 
$content = $(doc.querySelector('#content')) 
Verwandte Themen