[英]jquery ajax parse response text
好的,这真的让我感到沮丧,因为我已经做过一百次了,但是这次却没有用。 所以我知道我做错了,我只是想不通。
我正在使用jQuery .get例程从另一个文件加载html。 我不想使用.load(),因为它总是替换我要将内容加载到其中的元素的子元素。
这是我的.get请求:
$(document).ready(function() {
$.get('info.html', {}, function(html) {
// debug code
console.log($(html).find('ul').html());
// end debug code
});
});
文件'info.html'是具有正确doctype的标准xhtml文件,并且体内唯一的一件事是我需要访问的一系列ul。 由于某种原因,find函数给我一个空值。
在萤火虫中,GET请求显示正确的响应文本以及运行时
console.log(html);
代替了当前的console.log行,我得到了整个info.html作为输出,就像我期望的那样。
有任何想法吗?
您不能提取整个XHTML文档。 您只能处理html文档的<body>
中存在的标记。 令人沮丧 从info.html剥离<body>
标记内的所有内容,然后重试。
还可以通过其他方式解决此问题-请在此响应的基础上的“ Stackoverflow相关项”下面进行检查。
从文档中:( http://docs.jquery.com/Core/jQuery#htmlownerDocument )
“ HTML字符串不能包含div中无效的元素,例如html,head,body或title元素。 ”
我知道这是一篇过时的文章,但几个小时来我一直遇到同样令人沮丧的问题,并且找到了解决方案。 对我来说,实际上有效的方法是将HTML内容包装在一个表单标签中。
因此,具有以下html来源:
<html>
<head>
<body>
<form>
<div id="content">Some Stuff</div>
</form>
</body>
</head>
</html>
与此jQuery片段应工作:
var callback = function (data) {
alert($("#content", $(data)).html());
};
$.get(url, null, callback, null);
希望这可以帮助...
我发现这是非常干净的解决方案:
var elementInResponse = $("<div>").html(responseText).find(selector);
想要做同样的事情,并且知道JQuery load(..)是这样做的,我看了一下代码。 虽然您不能将完整的html响应直接转换为JQuery对象,但是可以将其附加到以下对象中:
function(data, textStatus, xhr) {
$(target).html(jQuery("<div>").append(data).find("#snippet"));
// Create a dummy div to hold the results,
// inject the contents of the document into it,
// Locate the specified elements
}
来自服务器的数据响应如下:
<! doctype ... >
<html>
<head>
...
</head>
<body>
<div id="snippet">
<p>Some content here that we are interested in</p>
</div>
</body>
</html>
尝试将整个主体包含在<div>
标记内,例如<body><div>content</div></body>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.