Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Jquery. загрузка части документа через ajax-запрос (https://javascript.ru/forum/jquery/7951-jquery-zagruzka-chasti-dokumenta-cherez-ajax-zapros.html)

InviS 28.02.2010 12:51

Jquery. загрузка части документа через ajax-запрос
 
Ребят, подскажите, пожалуйста, не могу понять как через ajax запрос загружать лишь часть данных при помощи jquery. К примеру, есть какая-то страница server.php, к которой идет ajax-запрос, но она выдает что-то типа:
<div>бла бла бла</div>
<select id='first'>...</select>
<select id='second'>...</select>
<div>..</div>
.....

И мне нужно выбрать из этого всего #first и загрузить в один контейнер, а #second - в другой.... Вот функция:
$.post("server.php",{region : "all", country : "all"},function(data){
     // what to do?
});

Но что в ней делать? Как это реализовать

sysya 28.02.2010 13:09

всё находится в переменной data, я использую например
$(data).each(function(){ /*this указывает на текущий элемент*/ });
each цикл для перебора элементов

micscr 28.02.2010 13:32

Мне кажется тут проще так:
$('#first', data).appendTo('куда надо добавить на странице');

InviS 28.02.2010 14:36

Цитата:

Сообщение от micscr (Сообщение 46319)
Мне кажется тут проще так:
$('#first', data).appendTo('куда надо добавить на странице');

Я попробовал сначала вывести содержимое просто через alert:
alert($("#first",data));

выдает, что data - это [object Object], а не вставляет его код :(

sysya 28.02.2010 15:04

зачем выводить та его, надо сделать с ним что хочешь и вставить его в другой элемент с помощью appendTo как уже написал micscr
$('#first', data).appendTo('body');//к примеру

micscr 28.02.2010 16:31

Цитата:

Сообщение от InviS (Сообщение 46320)
Я попробовал сначала вывести содержимое просто через alert:
выдает, что data - это [object Object], а не вставляет его код :(

alert($("#first", data).html());

InviS 01.03.2010 01:22

Вот, что вижу, написав так, как вы сказали:

перед этим поставил вывод переменной data через alert и там было все в порядке:
<select id='first'>
   <option value='1'>One</option>
   ....
</select>

Но именно то, что мне нужно, я выбрать не могу ;(

micscr 01.03.2010 09:01

Весь получаемый html должен быть верным деревом для того что я написал. Типа такого:
<div>
  <select id="first">
    <option value=1>One</option>
    <option value=2>Two</option>
    <option value=3>Three</option>
  </select>
  <div>rrr</div>
</div>

Тогда все работает. Сам проверил. Так что вам стоит вывод обернуть в общий тэг.

InviS 01.03.2010 17:47

Спасибо огромное! Действительно нужен был общий тег =) просто жесть :D
Кстати, а то же самое нельзя сделать чем-то вроде
$(data).filter("#first").html();

Я пробовал - не получается, но по идее же можно?


Часовой пояс GMT +3, время: 12:38.