2013-09-21 3 views
22

Я использую jQuery-ajax-код для загрузки новых страниц, но хотел, чтобы он получил только html div.Как получить html div на другой странице с помощью jQuery ajax?

Мои коды: HTML:

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

Сценарий:

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

Я хотел, чтобы он получил только HTML в $ ('# Div содержание') на другой странице. Как это сделать?

ответ

1

Вы действительно не можете сделать это, Ajax запрос получает весь файл, но вы можете фильтровать содержимое, как только это извлеченный:

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

Обратите внимание на использование фиктивного элемента, как find() работает только с потомками , и не будет находить корневые элементы.

или пусть JQuery фильтровать для вас:

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

Я предполагаю, что это не запрос крест домена, так как это не будет работать, только страницы на том же домене.

+0

Да я попробовал этот метод, но не правильный фильтр. –

36

Хорошо, вы должны «сконструировать» html и найти div .content.

так:

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

просто!

+0

Не делайте этого, это приведет к тому, что сценарии будут запускаться с другой страницы потенциально - это странная проблема, которая может не повлиять на вас, но я рекомендую использовать .load, который лишит скрипты. Ala 'var loadHolder = $ ('

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

20

Вы можете использовать JQuery .load() метод:

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

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

Отлично! Любая идея, как заставить его правильно загружать изображения, которым присваивается корневая ссылка '/' вместо относительного '../' или absolute 'http: // example.com /'? В принципе, как вы можете загрузить его для загрузки изображений на другой сайт? – fredsbend

11

Если вы ищете контент из другого домена это будет делать трюк:

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

эй это Браярклифф !! : D Я из White Plains – Sticky

+0

, это приведет к тому, что скрипты будут запускаться с другой страницы потенциально - это странная проблема, которая может не повлиять на вас, но я рекомендую использовать .load – Shadaez

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

Этот консольный журнал получает массив вроде объекта: [meta, title,,], очень странно

Вы можете использовать JavaScript:

var doc = document.documentElement.cloneNode() 
doc.innerHTML = data 
$content = $(doc.querySelector('#content')) 
Смежные вопросы