我为提取表格的页面提取了一个完整的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无法访问数据中的“”。我怎么能删除它。
答案 0 :(得分:2)
问题在于这一行:
var theHtml = $(data).filter('#container>table:first').html();
$(data)
会公开body
元素的直系子女的所有子女,但#container>table:first
不能是body
元素的子女,因为{{ 1}}明确是table
的孩子。
也许你是这个意思?
#container
编辑:为了回应var theHtml = $(data).filter('#container').children('table:first').html();
返回的格式错误的理论HTML:
如果jQuery在尝试解析data
时返回语法错误,则表示HTML格式错误。问题是jQuery可以接受各种各样的参数:$(data)
将根据是否给出不同的函数运行:
如果XML或HTML字符串格式错误,它会尝试将其解释为选择器 - 这会导致错误。要强制它以HTML格式解析,请使用以下表达式:
$()
而不是
$.parseHTML(data)
但理想情况下你不必这样做:问题的根源是你的AJAX请求返回的HTML,这可能会导致其他地方出现打嗝。我建议通过validator传递该响应,看看是否可以通过标记来解决问题。