JQuery AJAX хэш вернуть фрагмент страницы - PullRequest
1 голос
/ 26 февраля 2010

У меня есть приложение с такими URL-адресами:

domain.com / category1 / category2 / и т. Д.

Я вижу, что ajax понимает # и может передавать параметры в мой php-скрипт. Мне интересно, есть ли способ в ajax сделать следующий URL:

domain.com / # category1 / category2 /

Если так, есть ли функция, которую я могу использовать в jquery для этого? Я видел JQuery барбекю, но я очень запутался, как это помогает мне. Такое ощущение, что есть более простой способ - просто удалить хеш и передать оставшийся 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'];
?>

Я что-то не так делаю?

Приветствия за любую помощь

Ke

Ответы [ 2 ]

2 голосов
/ 26 февраля 2010

Вы можете получить значение хеша (после #), получив свойство document.location.hash (это стандартное свойство, а не jQuery), а затем передать его сценарию на стороне сервера, вызвав $ .ajax с некоторым параметром вроде { hash: document.location.hash} в данных.

0 голосов
/ 27 февраля 2010

Я что-то не так делаю?

Да.

  1. Вы используете хеш-переменную во второй строке вместо хеш-кода.
  2. неправильное регулярное выражение: вы пытаетесь найти что-нибудь ДО #symbol, но вам нужно просто удалить # из начала document.location.hash
  3. Взгляните на следующий пример

    $('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;
    });
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...