如果你去这里:http://twitter.com/account/resend_password
然后点击“发送说明”而不填写表格,它似乎正在执行完整的非ajax请求。
但是,如果我查看浏览器历史记录,则上一页(resend_password)不在历史记录中。就好像它提出了一个ajax请求。
什么是Twitter在做什么?这真的只是一个ajax请求,还是它做了一些棘手的事情?
答案 0 :(得分:3)
window.location.replace
会加载一个页面,但不会将其保存在历史记录中。
window.location.replace('http://twitter.com/account/resend_password');
答案 1 :(得分:0)
这不是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
在Web服务器公共根文件夹中。它的行为与Twitter页面完全相同:单击表单提交按钮,使用header
功能触发 302重定向。浏览器历史记录不会更改。