Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使javascript生成的HTML可由谷歌爬虫索引?_Java_Jquery_Struts2_Seo_Google Crawlers - Fatal编程技术网

如何使javascript生成的HTML可由谷歌爬虫索引?

如何使javascript生成的HTML可由谷歌爬虫索引?,java,jquery,struts2,seo,google-crawlers,Java,Jquery,Struts2,Seo,Google Crawlers,我有一个带有标题导航的网络表单 为了生成这个标题导航,我对Java类进行了AJAX调用,并得到一个JSON字符串作为响应 我解析字符串并在jQuery中创建HTML。以下是一个例子: $(document).ready(function(){ $.ajax({ url: '/test/newHeaderJSON', dataType: 'json', type: 'GET',

我有一个带有标题导航的网络表单

为了生成这个标题导航,我对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>');
            }
        });
    });
$(文档).ready(函数(){
$.ajax({
url:“/test/newHeaderJSON”,
数据类型:“json”,
键入:“GET”,
成功:函数(数据、文本状态、jqXHR){
$('ul.main menu')。附加(“”);
}
});
});
上面的示例显示了通过jQuery添加到页面的锚标记

现在问题来了。此锚点在页面源中不可见,因此无法爬网

我想让这个组件可以爬网

我读过关于“逃逸碎片”的书,但无论我在网上找到什么,我都无法理解它

有人能告诉我如何以一种更容易理解的方式使用这种方法吗

下面是我使用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>

$.get('test/newHeader');
此锚点在页面源中不可见,因此无法爬网


谷歌能够抓取Javascript生成的页面。因此,你的说法是不正确的。因此,如果在
sitemap.xml
中有指向该/那些页面的URL,那么就没有问题。

是否真的需要通过javascript生成链接?如果你想让你的html“可爬网”,我强烈建议你在服务器端生成输出,而不是尝试破解。链接的内容来自一个内容系统。我们不知道在任何时候,会有多少链接。它可以根据业务需要随时更改。所以我们不能只在HTML上添加锚定标记,因为我们不知道会有多少锚定标记。第二种方法是在后端生成HTML,这从来都不是推荐的方法。你可能想读这篇文章:。嘿,jfriend00,我已经浏览了这个链接。但是我不能在我的情况下使用第三方,比如HtmlUnit.:(有什么理由调用ajax吗?