来自.ajax()调用的数据的jQuery .find()返回undefined

时间:2017-06-14 10:42:12

标签: javascript jquery ajax

我正在尝试从body中提取.ajax()代码,但我将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 个答案:

答案 0 :(得分:0)

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

你可以像下面这样说:

&#13;
&#13;
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())
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:-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);
      }
    });
  });