2014-09-12 34 views
0

我是第一个使用mvc 4的站点,站点使用了很重要的异步请求,到目前为止它们都是可管理的,基本上这是一个页面,它显示来自数据库的记录,并允许用户根据某些下拉列表中的选择来筛选它们它们提出这些请求。如何进行异步请求并更新url/querystring参数?

现在业务需求指出在发生过滤时更新URL,以便用户可以通过复制粘贴URL共享已过滤的记录,我想知道是否有办法实现它,比如instagram如何在点击时显示图像模型弹出窗口,并更新URL,以便用户可以分享它,当通过家庭导航到通知时,twitter也是如此。

任何建议将不胜感激。 在此先感谢。

+1

搜索发现http://stackoverflow.com/questions/824349/modify-the-url-without -reloading-the-page – whatever5599451 2014-09-12 17:39:09

+0

@ whatever5599451:这些都是很好的答案,但考虑用户存储这个url时的场景,下一次向页面发出请求后端方法如何读取这些值? – Vishal 2014-09-12 17:48:41

回答

2

Instagram使用JavaScript历史记录API通过javascript更改网址,而无需重定向。看看https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

// Suppose http://mozilla.org/foo.html executes the following JavaScript: 
var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", 
"bar.html"); This will cause the URL bar to display 
// http://mozilla.org/bar.html, but won't cause the browser to load bar.html 
// or even check that bar.html exists. 

对于MVC友好JS库,你可以使用History.JS http://balupton.github.io/history.js/demo/?state=2

+0

这些是一个很好的解决方案,但考虑用户存储此url时的场景,下次向页面发出请求后端方法如何读取这些值? – Vishal 2014-09-12 17:54:01