繁体   English   中英

jQuery ajax解析响应文本

[英]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元素。

Stackoverflow相关项目:

我知道这是一篇过时的文章,但几个小时来我一直遇到同样令人沮丧的问题,并且找到了解决方案。 对我来说,实际上有效的方法是将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM