页面跳转的多种方式有什么区别??
主要是想知道Response.Redirect():和用js实现页面跳转的区别
例如js的<script>history.go(-2);</script>或者windows.open()和用Response.Redirect()直接跳转
另外多介绍几种增长见识。。。。
一般哪种用的比较多??
[解决办法]
其实值得一提的是<script>history.go(-2);</script>这种情况,多用在使用了服务器控件,然后又想在控件的事件中返回之前的状态保存页面,因为服务器控件会导致页面回发,所以即便history.back()仍然是当前页面,所以要 go(-2)
c#.net网页跳转七种方法 .
[解决办法]
Response.Redirect()产生一个http 3xx状态,客户端浏览器重定向到新的页面
Server.Transfer()接受http提交数据,并且将请求发送给另一个页面的处理程序
javascript的重定向则是完全基于客户端的跳转,和你在浏览器输入一个新的地址没有区别
根据渐进增强/平稳退化原则,你应该考虑到客户端不支持脚本跳转程序的逻辑完整性。
[解决办法]
Response.Redirect()
这个的工作原理就是:客户端输入url,向服务器发一次请求,访问到服务器,然后服务器响应返回一个跳转的url到客户端,然后浏览重定向(302),再像服务器发送一次请求,然后服务器根据请求,响应操作。实现这个过程中间访问了两次服务器,访问是有时间的所以这个比较耗时间。
Server.Transfer()
这个的工作原理就是:客户端输入url,向服务器发一次请求,访问到服务器,然后服务器响看你要访问一个新得url,直接从服务器跳转访问,返回你想要显示的。中间就访问了一次服务器,浏览器的地址不发生改变。
javascript loacation。href
这个的工作原理就是:完全基于客户端的跳转,不用请求。和你在浏览器输入一个新的地址没有区别
[解决办法]
js的<script>history.go(-2);
这个速度最快,从本地缓存中读取。但页面数据可能不是最新
windows.open()
这个有个好处在第二个窗体 JS脚本中可以用 windows.parent对象,来指向前一个窗体的引用,
可以用于获取数据以及执行函数等等,
和用Response.Redirect()
这个后台使用的跳转方法
实际上跳转效率稍微低点,因为需要和服务器两次交互才到目的页面。