博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用pjax时点击浏览器刷新按钮仅加载内容页的解决办法
阅读量:6620 次
发布时间:2019-06-25

本文共 917 字,大约阅读时间需要 3 分钟。

pjax可以实现ajax的局部刷新功能,同时能改变地址栏的URL,因此支持浏览器的后退和前进功能。

但是,在使用中,若没有正确使用,仍然会出现一些问题。

比如,我们在使用pjax后,能够在不加载整个页面的情况下,刷新局部的页面,并能很好的保留浏览器的前进和后退功能,但是,按F5或点击浏览器刷新按钮时,页面刷新后仅加载内容页部分,母版页的内容丢失。

原因是,我们沿用了ajax的思想,每次只加载要替换的部分。而pjax允许你跳转到一个完整的页面,然后只将目标页面中指定的部分替换原页面指定的部分。也就是说,我们应该跳转到一个完整的页面,而不应该是内容页部分。

我们用图示进行说明。

错误的做法

1 //内容页未设置母版页2 @{3     Layout = null;4 }
1 $(function () {2     $(document).pjax('a[data-pjax]', '#main_content', { timeout: 10000 });3 });

正确的做法(每个页面都应该是完整的页面)

1 //内容页应该设置母版页2 @{3     Layout = "~/Views/Shared/_Layout.cshtml";4 }
1 $(function () {2     $(document).pjax('a[data-pjax]', '#container', { fragment: '#container', timeout: 10000 });3 });

两种方法的比较

首先,两种方法均能实现局部刷新、浏览器的前进和后退的要求;

但是,由于地址栏中的url是新页面的地址,一旦刷新,“错误的做法”就没有母版页的内容了,而“正确的做法”仍然能得到完整的页面。

代码解释

fragment:CSS selector for the fragment to extract from ajax response (从ajax回应中提取的片段的CSS选择器)

 

 

【参考文献】

[1]  

[2]  (pjax官网)

转载于:https://www.cnblogs.com/tuty/p/6561918.html

你可能感兴趣的文章
获得同级iframe页面的指定ID元素的几种实现方法
查看>>
Winform开发框架之简易工作流设计
查看>>
【layer】关于layer打开就是最大化的使用
查看>>
安全管理最佳实践系列:阿里云Access Key的轮转
查看>>
机器视觉技术在无人便利店的应用
查看>>
js正则表达式语法
查看>>
内外兼修 用户从1到100万
查看>>
电商总结(四)基于共享存储的图片服务器架构
查看>>
语音聊天
查看>>
[Android]一个干净的架构(翻译)
查看>>
Oracle RAC安装过程中碰到的“坑”和关键点(一)
查看>>
Jmeter关联
查看>>
java的nio之:java的nio系列教程之Scatter/Gather
查看>>
★电车难题的n个坑爹变种
查看>>
帝国cms栏目别名如何调用?
查看>>
K-means之matlab实现
查看>>
运行第一个容器 - 每天5分钟玩转容器技术(4)
查看>>
97.4. 配置 Nagios
查看>>
Redis代码阅读3--Redis网络监听(2)
查看>>
使用Docker搭建SonarQube检测代码质量
查看>>