@aristarhandrianov

Как получить объект из данных полученных по AJAX?

Добрый вечер есть AJAX запрос к html документу

$.ajax({
				cache: false,
				url: page,
					success: function(data) {
						
						var data = $.parseHTML(data);
							// тут как то нужно получить <body> с его содержимым из data
						$('body').prepend(data);
					}

});


Нужно из полученных данных вытащить body

Что я делал:
success: function(data) {				
		var data = $.parseHTML(data);
		$('body').prepend(data);
}

Все выводит, все хорошо, но выводит весь хлам с мета и линками
Оборачивающих тегов почему-то нет, видимо сам браузер подчищает
проверил через:
console.log(data)
//и
console.log( $.parseHTML(data))

Все ок весь код выводит

Дальше решил проверить так
var $newBody = $(data).is('body');
console.log($newBody);


Получил
false

Решил попробовать найти хоть какой-то элемент набора и вывести его
var $newBody = $(data).find('h1');
$('body').prepend($newBody.html());


Все ок нашел и вывел

Я пошел дальше и решил перебрать набор элементов через each
$(data).each( function(){
		var $newBody = $(this);
		$('body').prepend($newBody.html());
});


И я был в шоке
Оригинал кода верстка
<body>
	<section>
		<div class="container">
			...
		</div>
	</section>
	<section>
		<div class="container">
			...
		</div>
	</section>
</body>

Что я получил:
<div class="container">
	...
</div>
<div class="container">
	...
</div>
<div class="container">
	...
</div>

Ну и в обратной последовательности все вывел
  • Вопрос задан
  • 1297 просмотров
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
$.ajax({
    cache: false,
    url: page,
    dataType: 'html',
    success: function(response) {       
            var $newBody = $(response).find('body');
              // тут как то нужно получить <body> с его содержимым из data
            $('body').prepend($newBody.html());
    }
});
Ответ написан
BRAGA96
@BRAGA96
Когда нужно достать элемент с $.parseHTML то обязательно нужно передавать контекст.
var $html = $($.parseHTML(response));
$('body').prepend($('body', $html));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы