2012-01-11 3 views
1

На моем сайте у меня есть файл с именем learn-more.html, он используется для загрузки материала из index.html с использованием AJAX.JQuery загружает неправильный html через ajax?

узнать-more.html

<div id="something" class="hero-unit span-one-third" style="position: relative;"> 
    Foo Bar 
</div> 

<div id="main-images" class="hero-unit span-one-third" style="position: relative;"> 
    <div id="learn-more-photo" class="span-one-third"> 
     <img class="thumbnail" src="http://placehold.it/300x180" alt=""> 
    </div> 
</div> 

У меня есть следующий сценарий находится в index.html

<script type="text/javascript" charset="utf-8"> 
     $(document).ready(function() { 
      $("#learn-more-button").click(function() { 
       $.get('ajax/learn-more.html #main-images', function (data) { 
         alert(data); 
       }); 
</script> 

Проблема: В бдительные печатает содержимое: learn-more.html

<div id="something" class="hero-unit span-one-third" style="position: relative;"> 
Foo Bar 
</div> 

<div id="main-images" class="hero-unit span-one-third" style="position: relative;"> 
    <div id="learn-more-photo" class="span-one-third"> 
     <img class="thumbnail" src="http://placehold.it/300x180" alt=""> 
    </div> 
</div> 

Ожидаемое Оповещение должно напечатать содержание: <div id="main-images">

<div id="learn-more-photo" class="span-one-third"> 
    <img class="thumbnail" src="http://placehold.it/300x180" alt=""> 
</div> 

Что может быть здесь происходит?

EDIT: Я хочу загрузить .zip с реальными файлами ... это просто index.html plust learn-more.html и css, если кто-нибудь заинтересован, дайте мне знать.

EDIT2: Это выводит весь Learn-more.html содержание

$.get('ajax/learn-more.html #main-images', function (data) {    
    alert(data); 
}); 
+1

Что вы пытаетесь сделать с помощью 'var foo = $ (data) .html()'? Вы помещаете результаты вызова ajax в фрагмент DOM, а затем извлекаете из него HTML. Почему не просто «предупреждение (данные)»? – jfriend00

+0

Попробуйте '$ .load' вместо' $ .get' – dyelawn

+0

Обновлен пример, извините за это :) – Goles

ответ

0

я решил мою проблему,

$ (data) возвращает массив элементов, а не объект jQuery. $ (data) [x] содержит элемент, который я искал.

Чтобы получить его, я закончил с использованием

$(data).filter('#main-images'); 

Спасибо всем за вашу помощь!

1

Я думаю, это то, что вы ищете:

$.get('ajax/learn-more.html', function (data) { 
    var foo = $("#main-images", data); 

    alert(foo.html()); 
}); 

EDIT

Хмм , попробуйте эти предупреждения, чтобы узнать, закрыты ли мы:

$.get('ajax/learn-more.html', function (data) { 
    var foo = $("#main-images", data); 

    alert(foo.length); 
    alert(foo.hasClass('hero-unit span-one-third')); 
    alert(foo.html()); 
}); 

EDIT

Может попробовать обертывание переменных данных в функции JQuery?

$.get('ajax/learn-more.html', function (data) { 
    data = $(data); 

    var foo = $("#main-images", data); 

    alert(foo.length); 
    alert(foo.hasClass('hero-unit span-one-third')); 
    alert(foo.html()); 
}); 
+0

Если я действительно предупреждаю (foo), я получаю [object Object], если я это делаю: var foo = $ (« # main-images », data) .html(); а затем alert (foo), я получаю «null». Есть идеи ? – Goles

+0

@ Mr.Gando - не уверен - проверьте мое редактирование - возможно, это поможет отладить это –

+0

Получил: alert (foo.length); => 0 alert (foo.hasClass ('span-one-third'); => false alert (foo.html()); => null – Goles

0

Вместо того, чтобы использовать $.get(), чтобы сделать это, попробуйте метод load вместо:

$(target).load('ajax/learn-more.html #main-images', function(data){ 
    alert(data); 
}); 
+0

Это не работает, я даже не получаю предупреждение ... – Goles

+0

Просто отредактировал этот пример, чтобы включить целевой объект, в который вы будете загружать этот контент. Таким образом, ваша цель будет элементом в вашем файле 'index.html', и когда метод загрузки будет успешно запущен, содержимое цели будет заменено содержимым элемента' # main-images' в 'learn-more .html'. Если он ничего не возвращает, убедитесь, что ваш путь к 'learn-more.html' правильный. Также предложит использовать console.log (данные) вместо предупреждения (данных) для ненавязчивой отладки в Web Inspector (браузеры WebKit) и Firebug (Firefox). – Jon

0

попытка отметить ответ datatype

<script type="text/javascript" charset="utf-8"> 
     $(document).ready(function() { 
      $("#learn-more-button").click(function() { 
       $.get('ajax/learn-more.html', function (data) { 
         alert($(data).find('div#main-images').html()); 
       }, 
       'html'); 
      }); 
     }); 
</script> 
+0

Это возвращает null – Goles

+0

Я обновил ответ и добавил тип данных ответа .. попробуйте его сейчас. –

+0

все еще возвращает null ... Я отредактировал свой вопрос с небольшим обновлением. – Goles

0
<script type="text/javascript" charset="utf-8"> 
     $(document).ready(function() { 
      $("#learn-more-button").click(function() { 
       $.get('ajax/learn-more.html', function (data) { 
         var main_images = $(data).find("#main-images"); 
         alert(main_images); 
       }); 
</script> 
Смежные вопросы