这应该很简单,但我似乎无法针对正确的元素。我已经从.ajax()帖子中返回了数据:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>blah blah blah</p>
</body></html>
我需要找到<h1>
标签的内容,如果它===“发现”做某事,如果它!=“找到”做其他事情。
$.ajax({
type:$('#Trial').attr('method'),
url: form.action,
data: dataString,
dataType: "HTML",
success: function(data){
var answer = $(data).find('h1').text();
if (answer==="Found") {
modal.open({content: 'found ' + answer});
} else {
modal.open({content: 'not found ' + answer});
}
}
});
return false;
}
这是行不通的:'var answer = $(data).find('h1')。text();'我究竟做错了什么?谢谢!
答案 0 :(得分:2)
假设你的ajax调用将html作为字符串返回。在使用jQuery.parseHTML()
使用jquery之前,需要先将其解析为html答案 1 :(得分:2)
来自jQuery(html)文档:
如果HTML比没有属性的单个标签更复杂,那么 在上面的例子中,元素的实际创建是 由浏览器的
.innerHTML
机制处理。...
如前所述,jQuery使用浏览器的
.innerHTML
属性进行解析 传递的HTML并将其插入当前文档。在这 过程中,某些浏览器过滤掉某些元素,例如<html>
,<title>
或<head>
个元素。结果,插入的元素可以 不能代表传递的原始字符串。
换句话说,您的$(data)
不有一个<body>
元素。你可以简单地使用:
$(data).filter('h1').text();
答案 2 :(得分:0)
如果你得到404,success
函数永远不会触发。
另一件事是你返回DOM字符串:
var answer = $(data).find('h1').text()
你需要这样做:
var answer = $.parseHTML( data )
answer.find("h1").text()