来自 .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 似乎忽略了 <body>
和 <html>
元素,因此您实际上得到了正文中包含的内容的数组。解决此问题的一种方法是将该 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;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
【讨论】:
如果响应html包含<head>
标签中的一些数据,例如:<head><style>// style here</style></head>
head标签中的内容也会可见。以上是关于来自 .ajax() 调用的数据的 jQuery .find() 返回未定义的主要内容,如果未能解决你的问题,请参考以下文章
在服务器端分页上防止来自 jquery 数据表的多个 ajax 调用
使用循环在 HTML 中显示来自 jQuery.ajax 的 json 数据