Jquery ajax哈希返回页面片段

时间:2010-02-26 08:15:11

标签: php jquery ajax

我有一个像这样的网址的应用程序:

domain.com/category1/category2/ etc。

我看到ajax理解#并且可以将params传递给我的php脚本。我想知道ajax中是否有办法执行以下URL:

domain.com/#category1/category2 /

如果是这样,是否有一个我可以在jquery中使用的函数来执行此操作?我见过jquery bbq,但我很困惑这对我有什么帮助。感觉有一种更简单的方法,只需删除哈希并将剩余的url传递给我的php脚本,然后返回页面片段?

如何在不刷新页眉和页脚的情况下设置我的php脚本以返回主页片段?我是否需要检测到#或javascript已被调用,然后返回相关片段?

我正在尝试这种方式,但它没有发布Ajax:hasher参数。

<script>
hasher = document.location.hash;
hasher = hash.replace(/^.*#/, '');
$.ajax({ type: 'POST', url: url, data: {ajax:hasher}, dataType: 'html' }); 
</script>
<?php
echo $_POST['ajax'];
?>

我做错了吗?

为任何帮助干杯

2 个答案:

答案 0 :(得分:2)

您可以通过获取document.location.hash属性(这是标准属性,而不是jQuery)来获取哈希值(在#之后),然后通过调用$ .ajax并将其传递给服务器端脚本,例如{数据中的hash:document.location.hash}。

答案 1 :(得分:0)

  

我做错了吗?

  1. 您在第二行使用hash var而不是hasher。
  2. 错误的正则表达式:你试图在#symbol之前找到任何东西,但你只需要从document.location.hash
  3. 的开头删除#。
  4. 请看下面的示例

    $('a.submit').click(function(){
        var hasher = document.location.hash;
        hasher = (hasher.length>0)?hasher.substr(1):'';
        $.ajax({
            type: 'POST', 
            url: '/test.php', 
            data: {ajax:hasher}, 
            dataType: 'html',
            success:function(response) {
                $('#ajax').html(response)
            }
        }); 
        return false;
    });