如何添加“#!”在ajax的所有网址之前

时间:2011-09-10 21:42:24

标签: jquery ajax url

我正在做一个Ajax网站,我必须添加到所有网址“#!”当访问者点击网址时,我的网站上的房子(不适用于外部网址)。 例如,当有人点击网址http://mysiteajax.com/contact/时,脚本就会更改网址:“http://mysiteajax.com/#!/contact /”

我编写了一个小脚本jQuery,但它不起作用:

   <script>
        var  base_url = "http://localhost/ajaxsite/";
        function link(href) {

        // Check if the URL is an internal url
        if(href.indexOf(base_url) !=-1 || href.indexOf('http://') == -1 || href.indexOf('https://') == -1) {
        href = href.replace(base_url,'');
        return base_url + '#!/' + href;
         }
        }

        // Changes the link when someone clicks
        $(document).ready(function () {
        $('a').click(function() {
        $('a').attr('href', link(this));
        });
        });
        </script>

你能帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:2)

以下是我看到的一些问题:

  • 代码段中没有ajax
  • 您正在将一个anchor-tag元素传递给link(),而不是一个href
  • 这对页面抓取工具没有影响,因为抓取工具不执行JS
  • #及其后的任何内容都不会传递到您的服务器

如果我假设你在某个地方有ajax,那么由于原因2和3(假设你的ajax请求应该发给root),这仍然不起作用。

改变这个:

$('a').attr('href', link(this));

到此:

$(this).attr('href', link($(this).attr('href')));

这有点乱,但这是仅使用jQuery-isms更改点击元素的唯一方法。

我认为没有理由按照你的方式去做。如果您正在寻找this,我认为Google的网络抓取工具不会解释JS(这会在他们进行抓取的规模上花费太长时间)。你需要把它放在HTML本身。