2017-06-14 56 views
0

我试图从.ajax()提取body标签,但我得到undefined登录到控制台的数据...jQuery的.find()从阿贾克斯()调用返回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>' 
+2

是什么'的console.log(数据)'什么样子的? – 31piy

+0

什么数据是从url返回的。添加'/ user/profile/delete' – guradio

+0

@ 31piy我更新了我的问题 – Valip

回答

0

好像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>

-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); 
     } 
    }); 
    });