-1

我为页面提取了一个完整的 html 代码来提取表格。这是我的代码。

  $(document).ready(function () {
        alert("Hello");
        $.ajax(
        {
        url: '/Member/DownloadUrlData',
        type: "POST",
        dataType: "html",
        async: true,
        cache: false,
        beforeSend: function (request) {

        },
        success: function (data) {

            alert(data);
            var theHtml = $(data).filter('#container>table:first').html();
            $("#rData").append(theHtml);

       },
        error: function (xmlHttpRequest, textStatus, errorThrown) {
                    },
        complete: function (xmlHttpRequest, textStatus) {
       }
   });
    });

但我无法提取表格。错误日志中显示的问题是 jquery 无法访问数据中的“”。我怎样才能删除这个。

4

1 回答 1

2

问题在于这一行:

var theHtml = $(data).filter('#container>table:first').html();

$(data)将暴露元素的直接子元素的所有子body元素,但#container>table:first不能是元素的子body元素,因为table它明确是#container.

也许你是这个意思?

var theHtml = $(data).filter('#container').children('table:first').html();

编辑:针对data返回的 HTML 格式错误的理论:

如果 jQuery 在尝试 parse 时返回语法错误,则$(data)意味着 HTML 格式错误。问题是 jQuery 可以接受各种参数:$()根据是否给出不同的功能:

  • 一个选择器
  • XML 或 HTML
  • 一个函数

如果 XML 或 HTML 字符串格式不正确,它会尝试将其解释为选择器——这会导致错误。要强制它解析为 HTML,请使用以下表达式:

$.parseHTML(data)

代替

$(data)

但理想情况下,您不必这样做:问题的根源在于您的 AJAX 请求返回的 HTML,这可能会导致其他地方出现问题。我建议通过验证器传递该响应,以查看您是否可以纠正标记问题。

于 2013-07-23T10:56:51.353 回答