我想要做的似乎很简单:通过$.ajax()
获取一个超文本标记语言页面,并从中提取一个值。
$(function () {
$.ajax({
url: "/echo/html",
dataType: "html",
success: function (data) {
$('#data').text(data);
$('#wtf').html($(data).find('#link').text());
},
data: {
html: '<!DOCTYPE html><head><title><\/title><link href="../css/popup.css" rel="stylesheet" /><\/head><body><ul><li><a id="link">content<\/a><\/li><\/ul><\/body><\/html>'
}
});
});
问题是jQuery拒绝解析返回的超文本标记语言。
同时,我使用的fiddle不能正常工作,所以我几乎不能提供一个正常工作的示例。
更新:我的new fiddle运行得很好,但问题似乎是在我的实际项目中,我试图解析大量复杂的HTML.这是一个已知的问题吗?
发布于 2013-11-16 02:40:30
您的代码运行良好。您只是没有正确地使用jsFiddle的API。检查文档中是否有/echo/html/
(http://doc.jsfiddle.net/use/echo.html#html):
回应网址:/
/html/
数据必须通过POST提供
因此,您需要更新AJAX调用才能使用POST。尾部的斜杠也是必需的。
$(function () {
$.ajax({
url: "/echo/html/",
type: "post",
dataType: "html",
success: function (data) {
$('#data').text(data);
$('#wtf').html($(data).find('#link').text());
},
data: {
html: '<!DOCTYPE html><head><title><\/title><link href="../css/popup.css" rel="stylesheet" /><\/head><body><ul><li><a id="link">content<\/a><\/li><\/ul><\/body><\/html>'
}
});
});
发布于 2013-11-16 02:12:16
如果您想解析它,jquery有一个绝妙的技巧:)
ParsedElements = $(htmlToParse);
Console.log(ParsedElements);
现在,您有了DOM
元素,您可以遍历这些元素,而无需将它们放在文档体中。
发布于 2013-11-16 02:25:54
jQuery.parseHTML()
http://api.jquery.com/jQuery.parseHTML/
str = "hello, <b>my name is</b> jQuery.",
html = $.parseHTML( str ),
nodeNames = [];
// Gather the parsed HTML's node names
$.each( html, function( i, el ) {
nodeNames[ i ] = "<li>" + el.nodeName + "</li>";
});
你的小提琴上的ajax有些问题
var html= '<!DOCTYPE html><head><title><\/title><link href="../css/popup.css" rel="stylesheet" /><\/head><body><ul><li><a class="disabled" id="link">content<\/a><\/li><\/ul><\/body><\/html>';
h = $.parseHTML(html);
$('#data').text(h);
$('#wtf').html($(h).find('#link').text());
https://stackoverflow.com/questions/20007721
复制相似问题