谷歌的#! Ajax实现 - 不使用jQuery

时间:2011-08-17 14:49:38

标签: jquery ajax google-crawlers

好吧,我正在把头撞到桌子上,显然错过了一些简单的东西。

尝试让我的Ajax页面可以抓取谷歌。但是,它无法正常工作。

顺便说一句,我调用的内容中包含链接,并作为主要导航。

    <script type="text/javascript">
      // Test script
     $.ajaxSetup({
    type: "GET",  
    url: "UpdateResults7.php#!",   
    /*dataType: "text/html",  eliminated moveing from jq 1.4.1 to 1.5*/
    beforeSend:  function(){$("#txtResult").html("Pending"); },
    success: function(html){       $("#txtResult").html(html);     }
    });  // close $.ajaxSetup

    function dynamic_Select( state)  
    {  
    var myData = {pass_type: "<?php echo $pass_type ?>", pass_state: state};
    //$.post("setSession.php", {pass_state: state });
    $.ajax({  
            data: myData });  // close $.ajax
    } // close dynamic_Select   
    </script>

提前致谢!


好的,谢谢你的帮助。这就是我的立场: 1.)我的页面已经用#实现了!并且AJAX工作正常 2.)我进入firefox并复制并保存了该文件的HTML版本 3.)我在php文件的顶部放了一些脚本来检测“?_escaped_fragment_ =”并重定向到html文件。

但是,当我查看Google的fetchbot时,它不会显示任何AJAX生成的内容。我甚至将“?_escaped_fragment_ =”加载到地址栏中以确认它加载了正确的html副本,事实确实如此。

以下是页面顶部的代码:

    if (isset($_GET['_escaped_fragment_'])){
header(sprintf("Location: solidgreen-partners.html", $insertGoTo));
$path = $_SERVER['PHP_SELF'];
//generateStaticPHP($path);
    }

最后几行不起作用。我正在尝试按照http://code.google.com/web/ajaxcrawling/docs/html-snapshot.html

所述动态生成HTML快照

再次感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

看起来你对如何实现这一点的看法并不正确。

您网站上面向公众(或面向搜索引擎)的链接应采用适当的hashbang语法(#!)。这向Google(可能还有其他搜索引擎)表明您的网站是AJAX可抓取的。然后,Googlebot会使用名为_escaped_fragment_的GET参数实际请求这些网页。您的应用程序必须接受此参数并使用它将HTML快照返回给Googlebot。

您网站上的网址,例如:

http://mydomain.com/mypage.html#!somevar=somevalue
Googlebot实际上会要求

http://mydomain.com/mypage.html?_escaped_fragment_=somevar=somevalue

然后,您的应用程序将_escaped_fragment_的值解析出参数,构建,然后返回相应的HTML。

但这些都不适用于您在网站上进行的实际AJAX调用。这是你的问题。

有关详细信息,请参阅:http://code.google.com/web/ajaxcrawling/docs/getting-started.html