【发布时间】:2013-05-17 16:31:56
【问题描述】:
我有一个 PHP 文件,它根据 GET 参数集返回一个 JSON 数组。我不想重新加载页面,所以我使用 jQuery + AJAX 制作了一个简单的函数来在 div 标签中显示结果。
但是有一个问题,因为使用 AJAX 不会更改 URL,用户将无法共享链接。
HTML 称为“calculate.html”,GET URL 是这样的:
myweb.com/calculate.php?sex&female&age=23&brand=pull%26bear&msg=hello%20stackoverflow
我想知道在 AJAX 调用返回结果时修改 HTML 的 URL 的最佳做法是什么。当有人打开这个 URL 时,HTML 会读取它,然后使用这些参数执行调用。
我修改了.htaccess,这是html的url:
myweb.com/calculate/
并带有参数:
myweb.com/calculate/female/23/pull%26bear/hello%20stackoverflow
任何提示、建议或帮助将不胜感激,如果您需要更多信息,请告诉我,我会编辑帖子。
【问题讨论】:
-
最佳实践可能是更改 URL 的
location.hash- 这不会触发重定向,但您可以在 document.ready 上单独解析散列中的数据并重新运行AJAX 基于那里的东西。现代浏览器具有"hashchange" event,它在哈希更改时触发,但older browsers don't。 -
在@Blazemonger 评论之后,您有 window.onhashchange 事件:developer.mozilla.org/en-US/docs/Web/API/window.onhashchange
-
对于 HTML5 解决方案,也可以使用
history.pushState和popstate事件。但敢于关心你的目标受众,因为它是 HTML5... -
我会更改 calculate.php 以返回 HTML 内容而不是 JSON,然后您只需添加选项以将其显示在 div 或新选项卡上,其中 URL 将被更改,并且用户可以共享 URL。
-
@Joëlle 您要么 使用 URL 哈希或 HTML5 推送状态 API。哈希是一种 hack 但广泛兼容,推送状态 API 是官方认可的机制,但只有较新的浏览器支持它。
标签: php jquery ajax .htaccess friendly-url