2013-09-21 10 views
22

Używam kodu ajax jQuery do ładowania nowych stron, ale chciałem, aby uzyskać tylko HTML div.Jak zdobyć html div na innej stronie z jQuery ajax?

Moi kody: HTML:

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

Scenariusz:

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

Chciałem, żeby dostać tylko html $ ('div zawartości #') na innej stronie. Jak to zrobić?

Odpowiedz

1

Naprawdę nie można tego zrobić, AJAX żądanie pobiera cały plik, ale można filtrować zawartości raz to być pobierane:

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

Uwaga użycie manekina elementu jako find() działa tylko z potomkami i nie znajdzie elementów root.

albo niech jQuery filtrować go dla Ciebie:

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

Jestem przy założeniu nie jest to krzyż prośba domeny, jako że nie będzie działać, tylko strony w tej samej domenie.

+0

Tak próbowałem tej metody, ale nie odpowiedni filtr. –

36

Dobrze, powinieneś "skonstruować" html i znaleźć div .content.

tak:

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

Simple!

+0

Nie rób tego, spowoduje to, że skrypty będą uruchamiane z drugiej strony potencjalnie - jest to dziwny problem, który może nie mieć na ciebie wpływu, ale polecam używanie .load, który usunie skrypty. Ala 'var loadHolder = $ ('

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

20

Można użyć jQuery .load() metoda:

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

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

Idealnie! Dowolny pomysł, jak zmusić go do prawidłowego załadowania obrazów, które mają link root '/' zamiast względnego '../' lub absolutnego 'http: // example.com /'? Zasadniczo, jak możesz go załadować obrazy do innej witryny? – fredsbend

11

Jeśli szukasz treści z innej domeny to załatwi:

$.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

hej, to Briarcliff !! : D Jestem z White Plains – Sticky

+0

spowoduje to, że skrypty będą uruchamiane z innej strony potencjalnie - jest to dziwny problem, który może nie mieć na ciebie wpływu, ale polecam używanie .load – Shadaez

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

Ten dziennik konsoli pobiera obiekt podobny do tablicy: [meta, tytuł,,], bardzo dziwny

Można użyć JavaScript:

var doc = document.documentElement.cloneNode() 
doc.innerHTML = data 
$content = $(doc.querySelector('#content')) 
Powiązane problemy