Перенаправление внутри вызова Ajax - PullRequest
0 голосов
/ 25 марта 2009

Мне нужно перенаправить вызов Ajax, не сообщая об этом клиенту.

getPage.php - это приложение, которое возвращает html и т. Д. Для данного запроса.

getPage.php? Hash = интересно-заголовок статьи и getPage.php? Page = 3 возвращает то же самое.

Чтобы клиенту не приходилось кэшировать оба эти параметра, я бы хотел, чтобы getPage.php? Hash =интересный заголовок статьи перенаправил на getPage.php? Page = 3 через PHP заголовок 301 и местоположение.

Я пытался сделать это, и ничего не возвращается. Кажется, что вызов ajax не хочет быть перенаправленным.

Кто-нибудь знает, что может решить эту проблему двойного кэша?

Я хотел бы использовать перенаправления 301, потому что они кэшируются. Таким образом, браузер будет автоматически вызывать page = 3 , когда ему будет приказано извлечь hash = insteresting-article-title .

Примеры кода:

    function handleInit(event) {
        if (event.path != "/") {
            var hash = event.path.replace(/\//,"").replace(/\?/g,"");
            getPage(hash);
            currentState.hash = hash;
        } else {
            currentState.id = 1;
        }
        SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);
    }


    function chapter_forward() {
        if (!freeze) {
            freeze = true;
            getPage(currentState.id - 1);
        }
    }


    function ajax_data(id) {
        return typeof(id) == "string" ? "hash=" : "page=";
    }

    function getPage(id) {
        $.ajax({
            method: "get",
            url: getPage.php,
            data: ajax_data(id) + id.toString(),
            dataType: 'json',
            timeout: 2000,
            error: function() {
                $("#space-3").html('40104 - Request Timeout');
            },
            complete: function() {},
            success: function(result) {
                handleContent(result);
            }
        });
    }

Причина, по которой мне нужно, чтобы произошло перенаправление, заключается в том, что я получаю идентификатор из HASH, когда пользователь использует свои кнопки браузера вперед и назад.

Когда пользователь просто перемещается назад и вперед, я просто добавляю +1 к текущему идентификатору.

getPage.php возвращает что-то вроде этого:

{"article_id":"3","hash":"music-in-your-ear","title":"Music in your ear.","html":"Blah blah article 3","modified":"Fri, 20 Mar 2009 02:46:00 GMT"}

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 марта 2009

Если вы используете apache, mod-rewrites и файл карты перезаписи являются отличным способом решения этой серверной стороны, предполагая, что ваш хэш представляет собой предопределенный список терминов, которые отображаются на указанные идентификаторы.

Я предполагаю, что вы делаете это для выгоды SEO?

1 голос
/ 25 марта 2009

Если вы посмотрите на этот ответ , правильное поведение для браузеров - не кэшировать URL с параметрами запроса.

Я не знаю, работает ли перенаправление 301, когда вы в основном получаете доступ к одному и тому же URL.

Я предлагаю вам пройтись по своему коду и использовать одну из этих ссылок, только если они возвращают одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...