我用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;
答案 0 :(得分:47)
这是一段时间以前,但也许你仍然对它感兴趣..
$(String)
的实习生实现无法构建包含head
或body
标记的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进入匹配的 元件。