使用jquery解析完整的html页面

时间:2010-12-13 14:35:43

标签: javascript jquery ajax

我用ajax加载一个html。我想在jquery对象中加载结果。我尝试过,但它返回null。我怎样才能做到这一点?我有一个完整的页面,包括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 个答案:

答案 0 :(得分:47)

这是一段时间以前,但也许你仍然对它感兴趣..

$(String)的实习生实现无法构建包含headbody标记的jQuery对象。它将简单地忽略它们并将所有元素移到内部。

所以如果你的字符串是例如

<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')

希望有所帮助..

答案 1 :(得分:2)

test只是一个html字符串,因此您只需执行此操作即可显示内容

alert(result);

如果你想将它绑定到一个元素

$("#myDiv").html(result);

答案 2 :(得分:1)

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");

请告诉我这是否适合您。

答案 3 :(得分:-1)

尝试使用jQuery对象的load方法:http://api.jquery.com/load/

  

从服务器加载数据并放置   返回的HTML进入匹配的   元件。