Как мне добиться навигации, не влияя на историю браузера? - PullRequest
1 голос
/ 04 июля 2011

Если вы зайдете сюда: http://twitter.com/account/resend_password

Затем нажмите «Отправить инструкцию», не заполняя форму, похоже, он выполняет полный не-AJAX-запрос.

ОднакоЕсли я посмотрю историю моего браузера, предыдущей страницы (resend_password) нет в истории.Это как если бы он сделал запрос ajax.

Что делает твиттер?Это действительно просто запрос AJAX или он делает что-то хитрое?

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

window.location.replace загрузит страницу, но не сохранит ее в истории.

window.location.replace('http://twitter.com/account/resend_password');
0 голосов
/ 04 июля 2011

Это не запрос ajax.

Это тоже не сложно.

Twitter отвечает только на запрос HTTP POST с кодом ответа HTTP 302 (временно перемещено) - см. http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection. Браузер отвечает, как если бы это был код ответа HTTP 303 (см. Другое).

На самом деле, происходит просто перенаправление на ту же страницу .


Редактировать : добавлен код для тестирования.

Я только что протестировал следующий код, и он подтверждает сказанное выше:

<form method="post"><input type="submit" value="click here" /></form>
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
    header( 'Location: /test.php', true, 302 );
?>

Я использую PHP в качестве серверного языка. Я сохранил этот скрипт как test.php в общей корневой папке веб-сервера. Он ведет себя точно так же, как страница Twitter: при нажатии кнопки отправки формы перенаправление 302 запускается с помощью функции header. История браузера не меняется.

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