Javascript jquery ajax解析响应文本
好吧,这真的让我很沮丧,因为我以前做过一百次,但这一次它不起作用了。所以我知道我做错了什么,我就是想不出来 我正在使用jQuery.get例程从另一个文件加载html。我不想使用.load(),因为它总是替换我正在加载内容的元素的子元素 这是我的.get请求:Javascript jquery ajax解析响应文本,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,好吧,这真的让我很沮丧,因为我以前做过一百次,但这一次它不起作用了。所以我知道我做错了什么,我就是想不出来 我正在使用jQuery.get例程从另一个文件加载html。我不想使用.load(),因为它总是替换我正在加载内容的元素的子元素 这是我的.get请求: $(document).ready(function() { $.get('info.html', {}, function(html) { // debug code console.log($(
$(document).ready(function() {
$.get('info.html', {}, function(html) {
// debug code
console.log($(html).find('ul').html());
// end debug code
});
});
“info.html”文件是一个标准的xhtml文件,具有适当的doctype,正文中唯一的内容是我需要访问的一系列ul文件。出于某种原因,find函数给了我一个空值
在firebug中,GET请求在我运行时显示正确的响应文本
console.log(html);
与当前的console.log行不同,我将整个info.html作为输出,正如我所期望的那样
有什么想法吗?您不能拉入整个XHTML文档。您只能处理html文档的
中存在的标记。令人沮丧的。从info.html中删除不在
标记内的所有内容,然后重试
围绕这个问题还有其他可能的解决方法——在这个响应的基础上检查下面的“Stackoverflow相关项目”
从文件:()
HTML字符串不能包含div中无效的元素,例如
html、head、body或title元素。“
堆叠溢出相关项目:
标记中,例如内容想要做同样的事情,并且知道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
}
函数(数据、文本状态、xhr){
$(target.html(jQuery(“”).append(data.find(“#snippet”);
//创建一个虚拟div来保存结果,
//将文档的内容注入其中,
//找到指定的元素
}
进入数据的服务器的响应如下所示:
<! doctype ... >
<html>
<head>
...
</head>
<body>
<div id="snippet">
<p>Some content here that we are interested in</p>
</div>
</body>
</html>
...
这里有一些我们感兴趣的内容
我知道这是一篇老文章,但我已经有几个小时遇到了同样令人沮丧的问题,并找到了解决办法。对我来说,真正起作用的是用表单标记包装html内容
因此,具有以下html源代码:
<html>
<head>
<body>
<form>
<div id="content">Some Stuff</div>
</form>
</body>
</head>
</html>
希望这有助于 我发现这是一个非常干净的解决方案:
var elementInResponse = $("<div>").html(responseText).find(selector);
var elementInResponse=$(“”).html(responseText.find(选择器);
因此,我需要编写一个php脚本,将get请求放在两个html文件之间,嗯……这很节约,我希望避免这种情况。我相信是的,是的。老实说,您可以在PHP脚本中使用phpQuery。它将允许您使用jQuery样式选择器轻松返回内容。剥离所有内容,但其中的内容也不起作用…我得到了正确的响应,但无法解析它…无论如何,谢谢!我看不出你的代码有什么问题。但是,如果返回的html中有多个UL,那么“.find('UL').html()”只会为这些元素中的第一个元素提供html。Triffid,你确定吗?我在想它可能会从任何UL元素返回所有的LI。你们的语法帮了大忙<代码>警报($(“#内容“,$(数据))
我刚刚更正了缺失的“')”和一些拼写检查,非常感谢@nush。您的代码是:警报($()).html()代码>应该是:警报($().html())代码>这省略了头部和身体标签,这是一个非常重要的答案。与此主题的几乎所有其他线程中的答案相反,$(数据)
和$.parseHTML(数据)
都不会返回jQuery对象,这样您就可以链接到.find()
等方法。在jQuery 2.1.0中,将其附加到打开的div标记是唯一适合我的方法
var elementInResponse = $("<div>").html(responseText).find(selector);