Разобрать полную HTML-страницу с помощью jquery - PullRequest
8 голосов
/ 13 декабря 2010

Я загружаю HTML с помощью AJAX. Я хочу загрузить результат в объект jquery. Я пытался это, но он возвращает ноль. Как я могу это сделать? Я получил полную страницу, включая doctype, элементы head и body.

var test = $(result); //result contains html code
alert(test.html()); //returns null

Я загружаю данные с помощью этой функции.

function ajaxLoadContent(element) {
    $.ajax({
        url: "url to the page",
        type: "GET",
        timeout: 5000,
        datattype: "html",
        success: function(result) {
        //handler
        },
    });
    return false;

Ответы [ 4 ]

48 голосов
/ 12 октября 2012

Это давно, но, может быть, вы все еще заинтересованы в этом ..

Внутренняя реализация $(String) не может создать объект jQuery, содержащий теги head или body. Он будет просто игнорировать их и перемещать все элементы внутри на уровень вверх.

Так что, если ваша строка, например,

<html>
  <head>
    <meta ...>
  </head>
  <body>
    <div id="a"/>
  </body>
</html>

результирующий объект jQuery будет массивом из двух элементов

[<meta ...>, <div id="a" />]

чтобы получить body -подобный объект jQuery, обрежьте все, кроме содержимого тела, прежде чем передавать его в jQuery:

body = '<div id="body-mock">' + html.replace(/^[\s\S]*<body.*?>|<\/body>[\s\S]*$/ig, '') + '</div>';
var $body = $(body);

теперь все работает как положено .. например

$body.find('#a')

Надеюсь, это поможет ..

2 голосов
/ 13 декабря 2010

test - это просто строка html, так что вы можете просто сделать это, чтобы показать содержимое

alert(result);

и если вы хотите связать это с элементом

$("#myDiv").html(result);
1 голос
/ 13 декабря 2010
function ajaxLoadContent(element) {
$.ajax({
    url: "url to the page",
    type: "GET",
    timeout: 5000,
    datattype: "html",
    success: function(data) {
     var result = $(data);
    },
});
return false;

Теперь вы должны иметь возможность вызывать результат следующим образом (помните, что он еще не добавлен в DOM):

alert(result.html());

Добавить в DOM

result.appendTo("body");

Дайте мне знать, если это работает для вас.

0 голосов
/ 13 декабря 2010

Попробуйте метод load объекта jQuery: http://api.jquery.com/load/

Загрузить данные с сервера и разместить возвращаемый HTML в совпавший элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...