【发布时间】:2011-10-10 02:08:44
【问题描述】:
我正在使用这个 jQuery 插件
http://www.asual.com/jquery/address/
因为我有一个完整的 ajax 网站在 Rails 3.1.0 中被黑,但我的操作/方法也响应 html 请求。
如果我有链接
<%=link_to "my link",{:controller=>"my_controller",:action=>"my_action"},:remote=>true%>
它会进行调用,但 URL 将保持不变,如果我共享 URL,您将始终查看根页面 / 页面但使用此插件我可以调用 my_controller 的远程方法并使用
var elemetns = $("a.addressPlugin");
$.address.crawlable(1).state('/').init(function(){
elemetns.address();
});
我的新链接
<%=link_to "my link",{:controller=>"my_controller",:action=>"my_action"},:class=>"addressPlugin",:remote=>true%>
现在我的网址看起来像
http://localhost:3000/my_controller/my_action
但是当我回击浏览器时,页面保持不变
然后我想这样做
var elemetns = $("a.addressPlugin");
$.address.crawlable(1).state('/').init(function(){
elemetns.address();
}).change(function(e){
$.ajax({type:'GET',url:e.path,dataType:'script',cache:true});
});
所以现在它可以前后移动,但是 ....
当我单击链接时,它会进行两次远程调用....一次用于链接本身,一次用于.change(... 方法....但是当我向后退时它可以完美运行,它只会调用一次.change(... 方法....所以
如何防止$.ajax 仅在浏览器上向后和向前而不是在单击链接时进行调用,因为它们已经自己进行了调用?
>
在 Safari 和 Chrome 浏览器中,当我从主页退一步进入历史记录,然后使用浏览器的按钮向前导航时,我得到一个完整的白屏,仅显示通过 ajax 加载我的main/index 视图的 javascript 函数,但仅此而已在浏览器中
基本上这就是我想要复制的内容,但使用 ruby on rails 和他们的 remote links
【问题讨论】:
标签: jquery ruby-on-rails ruby-on-rails-3.1 link-to-remote jquery-address