【发布时间】:2013-05-31 07:55:54
【问题描述】:
我有一个带有标题导航的网络表单。
为了生成此标题导航,我对 Java 类进行了 AJAX 调用并获取 JSON 字符串作为响应。
我解析字符串并在 jQuery 中创建 HTML。下面是一个例子:
$(document).ready(function(){
$.ajax({
url: '/test/newHeaderJSON',
dataType: 'json',
type: 'GET',
success: function(data, textStatus, jqXHR) {
$('ul.main-menu').append('<a href="'+ obj.header.headerItems.productMenu.link +'">' + obj.header.headerItems.productMenu.name + '</a>');
}
});
});
上面的例子展示了一个通过 jQuery 添加到页面的锚标记。
现在问题来了。此锚点在页面源中看不到,因此不可抓取。
我想让这个组件可以抓取。
我已经阅读了 _escape_fragment_,但无论我在网上找到什么,我都无法理解它。
谁能告诉我如何以更容易理解的方式使用这种方法?
下面是我使用 jsp struts2 迭代器的另一种方法。即使在这种方法中,我也没有得到源代码。该代码适用于 DOM,但不适用于源代码。
<html>
<head>
<script type="text/javascript">
$.get('test/newHeader');
</script>
</head>
<body>
<s:iterator value="%{menuOptions.get('Home_Improvement').productgroup}" var="productGroupVar">
<a href="<test:sRelativeUrl url='/${productGroupVar.groupId}'/>">${productGroupVar.name}</a>
</s:iterator>
</body>
</html>
【问题讨论】:
-
真的需要通过javascript生成链接吗?如果你想让你的 html “可抓取”,我强烈建议在服务器端生成输出,而不是试图破解。
-
链接的内容来自内容系统。我们在任何时候都不知道会有多少链接。它可以根据业务需求随时更改。所以我们不能只在 HTML 上添加锚标签,因为我们不知道会有多少。第二种方法是在后端生成 HTML,这绝不是推荐的方式。
-
您可能想阅读这篇文章:Making Ajax Applications Crawlable。
-
嗨 jfriend00,我已经浏览了这个链接。但是在我的情况下,我不能使用像 HtmlUnit 这样的第三方。:(
-
有什么理由进行 ajax 调用吗?
标签: java jquery struts2 seo google-crawlers