一尘不染

如何在URL中显示Ajax请求?

php

我想要的是具有更改页面一部分的链接,以及它的动态URL,在这里可以指定诸如#calendar=10_2010tabview=tab2

Check this for an exact example:

所以这是我需要的链接格式:

#calendar=10_2010&tabview=tab2

我必须像链接变量calendartabview这样我就可以改变一个页面上的多个万物而不realoading。

要求

  • 需要从任何地方访问,例如邮件,或者我只写在网址栏中。

  • 该链接应该在历史记录中,因此,如果按后退或前进按钮,则需要访问该页面。

  • 页面刷新也需要工作。

请帮我!
我从来没有找到任何解决方案来做到这一点,但我不想使用jquery或任何API或任何库,我想拥有一个工作Javascript/AJAXPHP脚本。


阅读 444

收藏
2020-05-26

共1个答案

一尘不染

对于问题中链接的演示,实现该功能实际上非常简单-因为它根本不使用任何AJAX(当您开始将AJAX添加到组合中时,会变得更加困难-
稍后说明)。要实现该功能,您将;升级您的链接以使用哈希,然后绑定到hashchange事件中。不幸的是,hashchange事件与跨浏览器不兼容,尽管幸运的是有许多“历史/远程插件”可用-
多年来,我们首选使用的是 **jQuery History ,它是开源的,得到了​​大力支持并正在积极开发: -)。

虽然,当要在Facebook,WBHomes和Balupton.com等网站中添加AJAX功能时,您将开始面临一系列严重的难题!(我知道我是最后两个站点的首席架构师!)。其中一些问题是:

  • 如何优雅轻松地升级某些内部链接以使用“历史记录”和AJAX功能,并检测哈希值何时更改?同时保持其他链接像以前一样工作。
  • 如何从“ www.yoursite.com/myapp/a/b/c”重定向到“ www.yoursite.com/myapp/#/a/b/c”?并仍然为用户提供流畅的体验,以使3个必要的重定向尽可能地流畅。
  • 如何使用AJAX提交表单值和数据并更新哈希?反之亦然,如果他们不支持Javascript。
  • 如何检测AJAX请求需要页面的哪个特定区域?这样子页面就会显示正确的页面。
  • AJAX状态更改时如何更改页面标题?和其他非页面内容。
  • 如何在AJAX状态加载和更改时执行出色的内/外效果?这样用户就不会处于黑暗中。
  • 当我们通过AJAX登录时,如何更新侧边栏登录信息?显然,我们不希望该左上方的登录按钮再出现。
  • 如何为未启用JS的用户仍支持网站?这样它就可以正常降级,并且仍可以被搜索引擎索引。

我知道的唯一一个尝试解决所有这些极其困难的问题的开源,可靠项目已被证明是 jQuery
Ajaxy
。它实际上是对前面提到的jQuery
History项目的扩展,它提供了一个优雅的高级界面来向混音中添加AJAX功能,以解决幕后的难题,因此我们不必担心。它也是前面提到的最后几个商业站点中使用的选定解决方案。

祝您好运,如果您还有其他问题,请对此答案发表评论,我将尽快解决:-)

更新:现在有不推荐使用HTML4hashchange功能的HTML5历史记录API(pushState,popState)。History.js现在是jQuery
History的前身,并为HTML5 HistoryAPI提供了跨浏览器的兼容性,并为HTML4浏览器提供了可选的 hashchange备用。jQuery Ajaxy将针对History.js进行升级

2020-05-26