【问题标题】:Confused about jQuery $.get and $.load对 jQuery $.get 和 $.load 感到困惑
【发布时间】:2012-01-10 01:56:25
【问题描述】:

在我的网站上,我想实现 AJAX 页面加载,就像在 Facebook、Twitter 和相对较小的网站 Kotaku Gaming 上看到的那样。

基本上,这就是我想要做的:在域上的所有页面中拥有一个保持静态的标题,并且只使用 AJAX 和 jQuery 将内容加载到特定容器中。

jQuery 的 $.load() 几乎是完美的——但也只是差不多。这基本上是我要使用的代码:

$("#content").load("site.html");

但是,当使用此功能“加载”另一个页面时,URL 不会改变。这将破坏书签和链接,因此是不可接受的。网址需要更改。

$.get() 的问题在于页眉确实会随着页面的其余部分发生变化,这当然不是我想要的。

谁能帮我完成这个?如果上面提到的网站可以做到,我为什么不能呢?

【问题讨论】:

标签: jquery ajax get


【解决方案1】:

How can I change the page URL without refreshing the page? 上的第一个答案应该可以为您解决问题 - 使用 pushstate 推送新地址。请注意,这在旧浏览器中不起作用,我建议最好的理论是回到传统方法。

【讨论】:

  • 您可以使用History.js 来实现向后兼容性。
  • “对象或字符串”是什么意思?
  • 你需要传递一些东西,这样你就知道当有人点击“返回”时要加载哪个页面。我建议“oldpage.html”可能是一个好的开始。然后,您可以设置一个 popstate 事件侦听器来处理此问题。更多developer.mozilla.org/en/DOM/window.onpopstate(链接自我上面的链接)
【解决方案2】:

如果您希望 URL 随每个页面加载而更改,但希望标题保持不变,则可能值得为标题创建一个模板,然后更改每个页面的内容部分。

如果你使用的是 PHP 链接,这应该很简单,使用 include/require 或类似的。

【讨论】:

  • 是的,但是如果我加载了具有相同标题的新页面,该页面仍然会空白一秒钟,然后加载新站点。我希望标题在页面加载之间保持不变。
  • 在这种情况下,您可以使用锚点和 window.location.hash 将一些东西放在一起——类似于使用 ajax 替换内容然后使用散列 www.example.com/#/page1 作为查找用于后退按钮和书签
  • 这些锚点的诀窍是您可以更改它们而无需重新加载页面并看到空白页面的闪烁
  • 我从没想过!谢谢,我会调查的。
猜你喜欢
  • 1970-01-01
  • 2011-12-02
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 2014-11-02
  • 1970-01-01
相关资源
最近更新 更多