[英]Get title from HTML
我有一个服务器端函数,该函数返回HTML页面的内容:
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
Meteor.methods({
sayHello: function() {
var response = Meteor.http.call("GET", "http://google.com");
return response;
}
});
});
我在尝试从此HTML页面获取标题的客户端代码:
'click .add_tag':function(e,t){//Session.set('editing_tag_id',e.target.id);
Meteor.call("sayHello", function(err, response) {
var title = $(response.content).find("title").text();
var title2 = $(response).find("title").text();
var title3 = response.content.match(/<title[^>]*>([^<]+)<\/title>/)[1];
alert(title3);
});
我想获取jQuery版本(“ title”或“ title2”),但是它不起作用。 它返回空字符串。
'Title3'-版本工作正常,但我不喜欢正则表达式。 :)
有什么办法可以使“ jQuery”版本起作用?
根据要求,我将重申我的评论作为答案...
即使您不喜欢它,我也会坚持使用正则表达式。 纯粹出于解析少量文本的目的,构造本质上是整个页面的DOM元素会产生巨大的开销。 regex更轻巧,可以在速度较慢的浏览器或速度较慢的计算机上正常运行。
将response.content
包裹在<div>
,然后进行选择。 这样,您就可以从一个适当的结构开始,而不是从一个实际可能得到的数组开始。
var $wrap = $("<div></div>").html(response.content);
$wrap.find("title").text();
一个可能发生的情况的示例: http : //jsfiddle.net/UFtJV/
不要忘记一件事:永远不要将HTML返回给客户端。 您应该返回Json(甚至Xml),您的客户端将使用Template转换为Html。 您的工作就像许多开发Bad Ajax的开发人员一样。
不要忘记:“仅在线数据,不显示”。
因此,应该没有任何问题,响应时,您只需从Json格式的响应中获取数据并将其注入到Template中即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.