Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2011, 16:42
Новичок на форуме
Отправить личное сообщение для Kostushko Посмотреть профиль Найти все сообщения от Kostushko
 
Регистрация: 25.08.2010
Сообщений: 6

Как получить часть страницы загруженной через 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?
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2011, 16:55
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Kostushko
Вариант с html(obj #id1) не работает, приведен для примера
Еще бы. Может стоит сперва прочитать справку по JavaScript и jQuery?
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));
});
Ответить с цитированием
  #3 (permalink)  
Старый 01.05.2011, 18:13
Новичок на форуме
Отправить личное сообщение для Kostushko Посмотреть профиль Найти все сообщения от Kostushko
 
Регистрация: 25.08.2010
Сообщений: 6

B@rmaley.e><e, почему-то не работает, страница загружается
код:
$('#subs').html(data);

выводит всю загруженную страницу, а выборка по идентификаторам не срабатывает (ничего не выводится, дефолтный текст, прописанный в #id1 просто удаляется).
Ответить с цитированием
  #4 (permalink)  
Старый 01.05.2011, 18:47
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Хм, попробуйте
$.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());
});
Если не поможет, значит на загружаемой странице нет таких элементов.
Ответить с цитированием
  #5 (permalink)  
Старый 01.05.2011, 19:24
Новичок на форуме
Отправить личное сообщение для Kostushko Посмотреть профиль Найти все сообщения от Kostushko
 
Регистрация: 25.08.2010
Сообщений: 6

Все же не работает, но элементы такие на загружаемой странице есть. Посмотрите, пожалуйста, в чем может быть проблема?

Тестовая страница:
<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>


Оба файла во вложении
Вложения:
Тип файла: zip www.zip (937 байт, 7 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 02.05.2011, 06:58
Новичок на форуме
Отправить личное сообщение для Kostushko Посмотреть профиль Найти все сообщения от Kostushko
 
Регистрация: 25.08.2010
Сообщений: 6

Все заработало когда на исходной странице, добавил общий div (имя тега по всей видимости значения не имеет).

<div>
<div id="id11">
123
</div>
<div id="id22">
321
</div>
</div>
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2013, 01:10
Новичок на форуме
Отправить личное сообщение для Codemasters Посмотреть профиль Найти все сообщения от Codemasters
 
Регистрация: 04.11.2013
Сообщений: 1

Можно проще

success: function(data){
var data = $(data);
alert(data.find('#id_b').html());
}

Вместо #id_b нужный элемент.
Ответить с цитированием
  #8 (permalink)  
Старый 04.11.2013, 07:35
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Codemasters, какая строчка стала проще?
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 14:32
кеширование HTML переданого через ajax BorisBritva jQuery 6 02.04.2011 01:23
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32
Как разделять страницы при выводе отчета ilshat Events/DOM/Window 7 10.12.2009 10:24
Получить текст со страницы... Arest Общие вопросы Javascript 8 04.01.2009 20:09