Как получить часть страницы загруженной через ajax
Подскажите можно ли как-то уменьшить количество обращений к серверу в таком коде:
$(document).ready(function(){
$("#id1").load('ajax/all.html #id1');
$("#id2").load('ajax/all.html #id2');
$("#id3").load('ajax/all.html #id3');
$("#id4").load('ajax/all.html #id4');
});
Такой код делает 4 обращения к серверу, это именно та часть которую хотелось бы оптимизировать. Выставление кэширующих заголовков у файла ajax/all.html не помогает. В лучшем случае я получаю 304 ответ на первый запрос, а надо бы сделать чтобы запрос был 1. Нужно что-то типа такого:
var jqxhr = $.get("ajax/all.html", onAjaxSuccess);
function onAjaxSuccess(obj) {
$("#id1").html(obj #id1); // выводит блок с id1
$("#id2").html(obj #id2); // выводит блок с id2
$("#id3").html(obj #id3); // ...
$("#id4").html(obj #id4);
}
Вариант с html(obj #id1) не работает, приведен для примера. Можно как-то вытащить из obj нужный блок с заданным id? |
Цитата:
var jqxhr = $.get("ajax/all.html", function(data) {
data = $(data);
$("#id1").html($('#id1', data));
$("#id2").html($('#id2', data));
$("#id3").html($('#id3', data));
$("#id4").html($('#id4', data));
});
|
B@rmaley.e><e, почему-то не работает, страница загружается
код:
$('#subs').html(data);
выводит всю загруженную страницу, а выборка по идентификаторам не срабатывает (ничего не выводится, дефолтный текст, прописанный в #id1 просто удаляется). |
Хм, попробуйте
$.get("ajax/all.html", function(data) {
data = $(data);
$("#id1").html($('#id1', data).html());
$("#id2").html($('#id2', data).html());
$("#id3").html($('#id3', data).html());
$("#id4").html($('#id4', data).html());
});
Если не поможет, значит на загружаемой странице нет таких элементов. |
Вложений: 1
Все же не работает, но элементы такие на загружаемой странице есть. Посмотрите, пожалуйста, в чем может быть проблема?
Тестовая страница:
<div id="id1">загрузка</div>
<br />
<br />
<br />
<div id="id2">загрузка</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.get('all.html', function(data) {
data = $(data);
$("#id1").html($('#id11', data).html());
$("#id2").html($('#id22', data).html());
});
});
</script>
Страница которую грузит ajax: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Документ без названия</title> </head> <body> <div id="id11"> 123 </div> <div id="id22"> 321 </div> </body> </html> Оба файла во вложении |
Все заработало когда на исходной странице, добавил общий div (имя тега по всей видимости значения не имеет).
<div> <div id="id11"> 123 </div> <div id="id22"> 321 </div> </div> |
Можно проще
success: function(data){ var data = $(data); alert(data.find('#id_b').html()); } Вместо #id_b нужный элемент. |
Codemasters, какая строчка стала проще?
|
| Часовой пояс GMT +3, время: 02:16. |