【问题标题】:Remove appended # from url in ajax call从 ajax 调用中的 url 中删除附加的 #
【发布时间】:2011-12-05 05:19:01
【问题描述】:

在我的 rails 应用程序中(rails 2.3.4 和 ruby​​ 1.8.7)当我点击 News 时,会进行 ajax 调用并加载数据。

 <a href="News" onclick="load_feed();"><u>Show More...</u></a>

 <script>
  function load_feed()
 {
 $.ajax({
   url: this.url,
 dataType: 'script'
 })
$('div .rss_feed_1').append("<%= escape_javascript(render :partial => "news_feed_data")   %>");
 }
</script>

当我单击 ajax 调用并加载数据时。但网址更改为

http://localhost:3000/us/dropbox#News 来自http://localhost:3000/us/dropbox,有什么办法可以通过删除# 来获取此网址http://localhost:3000/us/dropbox/News

【问题讨论】:

  • 我不确定但尝试在load_feed()末尾添加return false
  • 说实话,我从没想过#/ 更难看。
  • 这与#丑陋无关,我希望将其作为我的要求删除。

标签: javascript html ruby-on-rails ajax


【解决方案1】:

使用新的 Javascript pushState,您可以创建漂亮的 URL:s,同时保持在同一页面上,并且只使用 AJAX 获取数据。

这是其中的an example。这也是 Facebook 使用的方法。

【讨论】:

  • 为很棒的链接点赞。 Github 在探索文件结构等时也利用了这一点。
  • +1 获得唯一正确答案。但是,请注意,任何当前版本的 IE 都不支持该功能,并且在某些其他浏览器中可能存在问题 - 请参阅 caniuse.com/#search=pushstate 了解浏览器支持表。
【解决方案2】:

你只需要输入'return false;'在函数的末尾或写'onclick="load_feed(); return false;"'。因此,您可以防止触发默认操作(按照链接)。

【讨论】:

  • 这不是他想要的。问题不在于他被定向到/news。问题是他认为主题标签 url #news 看起来很难看,并希望有一个像 /news 之类的正确 url
  • @GhostRider styrr 试图阻止'#'首先被附加,这实际上是你在标题中描述的问题。实际问题与标题不完全匹配,因此您可能需要解决该问题。也就是说,Zeta 2 有你的答案
猜你喜欢
  • 1970-01-01
  • 2019-05-17
  • 2017-12-16
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 2019-05-21
相关资源
最近更新 更多