在PHP中修改当前URL而不刷新页面

时间:2017-04-05 06:01:16

标签: php jquery ajax curl

任何人都可以帮助我解决我的任务。

我的网页上有两个搜索框,当用户输入一些关键字并按下提交按钮时,我想要更换我的网址   www.domain.com/search 进入

www.domain.com/search/keywod1-sometext-keyword2。

2 个答案:

答案 0 :(得分:2)

建议将pushstate置于try内以防某些网络浏览器不支持它。此外,在大多数情况下,您根本不需要设置自己的标题,但如果您想:history.pushState(null, 'title', newLoc);

<script>
newLoc = "I/like/to/eat";
try {
        history.pushState(null, null, newLoc);
} catch(e) {}
location.hash = '#' + newLoc;
</script>

答案 1 :(得分:1)

你应该使用ajax从数据库中获取结果数据,并且在ajax的成功块上,你可以使用以下代码:

window.history.pushState("object or string", "Title", "/new-url");

请参阅Manipulating the browser history on MDN

  

pushState()有三个参数:状态对象,标题(当前被忽略)和(可选)URL。

     
      
  • 州对象
  •   
  • 标题
  •   
  • 网址
  •   
     

状态对象 - 状态对象是一个JavaScript对象,它与pushState()创建的新历史记录条目相关联。只要用户导航到新状态,就会触发popstate事件,并且事件的state属性包含历史记录条目的状态对象的副本。

     

state对象可以是任何可以序列化的对象。因为Firefox将状态对象保存到用户的磁盘,因此可以在用户重新启动浏览器后恢复它们,因此我们在状态对象的序列化表示上强加了640k字符的大小限制。如果将序列化表示形式大于this的状态对象传递给pushState(),则该方法将引发异常。如果您需要更多空间,建议您使用sessionStorage和/或localStorage。

     

标题 - Firefox目前会忽略此参数,但将来可能会使用它。在此处传递空字符串应该可以安全地防止将来对方法进行更改。或者,您可以为您正在移动的州通过一个简短的标题。

     

网址 - 此历史记录条目的网址由此参数指定。请注意,在调用pushState()之后,浏览器不会尝试加载此URL,但稍后可能会尝试加载URL,例如在用户重新启动浏览器之后。新URL不一定是绝对的;如果是相对的,则相对于当前URL进行解析。新网址必须与当前网址的来源相同;否则,pushState()将抛出异常。此参数是可选的;如果未指定,则将其设置为文档的当前URL。