来自 .ajax() 调用的数据的 jQuery .find() 返回未定义

Posted

技术标签:

【中文标题】来自 .ajax() 调用的数据的 jQuery .find() 返回未定义【英文标题】:jQuery .find() on data from .ajax() call returns undefined 【发布时间】:2017-11-16 11:17:05 【问题描述】:

我正在尝试从.ajax() 中提取body 标记,但我将undefined 登录到控制台...

这是我的代码:

$(document).ready(function()
  var user;
  $(".subacc_info").on('click', '#submit_user_delete', function()
    user = $(this).closest($(".subacc_info")).find($("#subacc_name")).text();
    $.ajax(
      type: "POST",
      url: '/user/profile/delete',
      data: user: user,
      dataType: "html",
      success: function(data)
        $result = $(data).find('body').html();
        console.log($result);
      
    );
  );

我是不是做错了什么?

console.log(data) 将此字符串打印到控制台:

'<!DOCTYPE html>
<html lang="en">
  <head>
    ...
  </head>

  <body>
    <div class="container">

       ....

    </div> <!-- /container -->
  </body>
</html>'

【问题讨论】:

console.log(data) 长什么样子? 从 url 返回什么数据。添加/user/profile/delete @31piy 我更新了我的问题 Find body tag in an ajax HTML response的可能重复 Get contents of <body> </body> within a string的可能重复 【参考方案1】:

ajax调用是加载json数据、html文件、图片、jsp。 首先,您应该知道您将从 ajax 调用中获得什么对象。

ajax调用的调用页面应该有一些div,可以显示ajax调用的返回输出。

$(document).ready(function()
  var user;
  $(".subacc_info").on('click', '#submit_user_delete', function()
    user = $(this).closest($(".subacc_info")).find($("#subacc_name")).text();
    $.ajax(
      type: "POST",
      url: '/user/profile/delete',
      data: user: user,
      dataType: "html",
      success: function(data)
        $("#SomeDIVId").html(data);
      
    );
  );

【讨论】:

【参考方案2】:

Jquery 似乎忽略了 &lt;body&gt;&lt;html&gt; 元素,因此您实际上得到了正文中包含的内容的数组。解决此问题的一种方法是将该 HTML 附加到另一个元素并获取该元素的 HTML。

你可以这样做:

var data = '<!DOCTYPE html><html lang="en"><head></head><body><div class="container"></div> <!-- /container --></body></html>';

var temp = $('<div>').append($.parseHTML(data));

console.log(temp.html())
.as-console-wrapper  max-height: 100% !important; top: 0; 
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

如果响应html包含&lt;head&gt;标签中的一些数据,例如:&lt;head&gt;&lt;style&gt;// style here&lt;/style&gt;&lt;/head&gt;head标签中的内容也会可见。

以上是关于来自 .ajax() 调用的数据的 jQuery .find() 返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

在服务器端分页上防止来自 jquery 数据表的多个 ajax 调用

使用循环在 HTML 中显示来自 jQuery.ajax 的 json 数据

实现启用 AJAX 的 WCF 服务 - 来自 JQuery 的调用没有响应

在 jQuery ajax 调用中处理来自服务器端的响应

通过 Jquery 启动/停止 Ajax 调用

如何在ajax调用中在jquery中使用三元运算符?