Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery ajax解析响应文本_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript jquery ajax解析响应文本

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($(

好吧,这真的让我很沮丧,因为我以前做过一百次,但这一次它不起作用了。所以我知道我做错了什么,我就是想不出来

我正在使用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”文件是一个标准的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);