我有一个由Ajax调用返回的html代码块。现在我想从中提取描述和关键字元标记。
success: function (data) {
//extracting page title by this way and it works as it should be ofc
var urlTitle = resultback.match(/<title>(.*?)<\/title>/);
urlTitle = urlTitle[1];
//extract description
//Currently using this method to retrieve description
var startpos, endpos;
startpos = endpos = 0;
var urlDescription = "";
startpos = data.indexOf('<meta name="description" content="') + 31
endpos = data.indexOf('" />', startpos)
urlDescription = $.trim(data.substring(startpos, endpos))
//What if meta tag is like this :
//<meta content="something" name="Description">
//thats my point of its "always not gonna work"
}
EDITED
我应该为此创建自己的ReGex,还是已经有了ReGex。
答案 0 :(得分:0)
您可以使用jQuery的强大功能从返回的数据中提取您需要的任何内容 - 因此您需要的代码实际上非常小。
success: function (data) {
// turn the result into a jQuery result set
var $result = $(data),
urlTitle = $result.find('title').text(), // gets the text of the title tag
urlDescription = $result.find('meta[name="description"]').attr('content'), // gets the contents of the description metatag.
urlKeywords = $result.find('meta[name="keywords"]').attr('content'); // gets the contents of the keywords metatag.
所以我基本上将从ajax请求返回的数据转换为jQuery元素,然后我们就可以通过jQuery搜索它来获得我们需要的东西。
答案 1 :(得分:0)
请包含data
的值。您的HTML可能无效,当您能够重新创建问题时,找到解决方案总是更容易。
但是,$(data)
可能成为元素数组而不是$.find()可以管理的DOM / jQuery对象。我created this example展示了差异,请查看控制台的输出。
$()函数返回一个数组而不是以下的完整jQuery / DOM对象;
$('<html><head><meta name="keywords" content="key, word" /></head><body><div class="customClass">Lorem ipsum</div></body></html>')
请参阅http://api.jquery.com/jQuery/上的“ jQuery(html [,ownerDocument])”部分。
例如,$(data)[0]
可能会很好地返回您的title
元素。
您还应该check the content type回复。