您的位置:首页 > 编程语言 > ASP

修改asp.net的Ajax变更为post请求的历程

2016-04-02 00:00 627 查看
摘要: 每个被折磨的岁月,都应该记录收获的果实。
公司原有的项目是用asp.net写,悲催的是本人是学java出生,只接触过C# 和 .NET MVC 4.0 虽说都有点类似,但着实让我苦恼了会。问题很简单,就是查询以后在点击加载更多查看某个详细点击返回始终都是返回到首次查询出的数据。这应该算属于Ajax的经典问题了。

问题:项目在微信上查询出数据,点击加载更多加载出第二页数据,点击其中一个跳转至详细页面,这个时候按安卓机的返回键,会返回出第一次查询出的数据,而第二页的数据,不好意思请你在点击一次 加载更多。

我们都知道Ajax的异步请求给我们带来很美好的用户体验感,但它的缺点也使的很多人在一些地方不得不放弃,而我很不幸的也遇到了这个问题,最终的结果我还是败下阵来,改用Post请求了。怎么想都是微信的错。

项目在其它手机游览器上是没有问题,唯独在微信的游览器上就会出现返回的时候始终返回第一次Search的数据,个人认为这应该是微信游览器的设计问题,不过多瞎扯,在其它游览器上我们会发现,我们如何的下一页 上一页 或者从Ajax页面跳转到非Ajax页面返回的时候,始终都是能返回到你上一个页面,在UC 游览上,你也可以通过左右滑动屏幕来获取到你前后所打开过的页面,这个时候,我在想我是否也能借着这形势来解决,我现在的问题。

微信上可没有UE游览器那样能让你左右滑屏,仅仅只有一个手机返回按钮,你只要触发返回所返回的请求必定是你上一次所与服务器产生交互的请求,于是我起初的想法是否能通过控制游览的返回url来处理我现在的问题,经过一番搜索后,我发现这并不是在我的能力范围内,而且我也没有那么多时间来处理,还没过试用期呢,后来在网上找到一篇博文给以了我一些灵感

http://blog.csdn.net/gf771115/article/details/18981363/ 各位可以去看一下,其中里面也有说到h5的两个有意思的东西 history.pushState 和 history.replaceState 但我始终无法处理返回以后再用Ajax去加载内容,所以不得不放弃使用H5的这两个,同时把 目标转移至Hash上面,显然我成功的将地址更换了,并且也将添加进游览器历史记录,我本以为我成功了,结果发现无论我在第一次回车,地址栏无法发送请求到后台,在回车第二次成功了,但参数里的信息仍旧是第一次Search的查询条件Page=1,这使的我很沮丧,问题出在哪里呢,难道一定要真实与服务器产生交互才能达到我想要的效果吗?或者,是我写法有问题,这时候我不犹的感到忧心了,因为在做这些事上我已经花费了半天多的时间了,最终改用Post的请求,原有的页面处理请求过程是



由于要改成Post请求方式,那么加载更多的这种方式将不再适用了,唯有将其改成上一页和下一页,然后将上一页和下一页操作过程跟Serach流程一样,那么问题来了,我该如何获得每次返回的页数,起初朋友建议我是一起将值带回到页面存储到隐藏域里,但这里有个致命问题就是点击Serach的时候它是重新将ComList页面重新加载一次,于是我采用Cookie,并且利用url,Serach与查看分页中有个参数不同来处理 看代码:



虽然看起来并不高端,但这也是我目前所想到的解决方案。

Don't give up, don't give in!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Ajax asp.net 返回 后退