0

我有一个列表,其中显示了一些距给定地址的距离的地方。此列表在使用过滤系统时由 ajax 更新。在我的部分 _place.html.haml 我使用这个:

- distance = Gmaps4rails.destination({:from => session[:address], :to => place.full_address}, options={}, output='pretty')
    %p= "Distance: #{distance.first["distance"]["text"]} (#{distance.first["duration"]["text"]})"

现在,当我使用 ajax 提交我的过滤器表单(为此使用 pjax)时,ajax 调用已正确完成,但在通过 ajax 渲染部分后,页面在调用函数 Gmaps4rails.destination 后被完全刷新(没有 ajax)。所以它会阻止 ajax 调用/函数。

当我从部分 _place.html.haml 中删除此代码时,ajax 过滤功能运行良好,并且整个页面没有刷新。我应该怎么做/改变才能让它与 ajax 一起使用?

4

1 回答 1

0

抱歉,我没有完全解决您的问题,但从描述来看,您似乎正在使用 pjax 并且还显示带有一些过滤条件的地图。

我还在一个应用程序中使用了 pjax 和 google-map。

场景:在单个页面上,我有两个选项卡,在选项卡开关处,我使用 pjax 在相同的 div 中加载内容。在我想显示地图的两个选项卡上,两个选项卡都使用相同的地图容器,所以我面临的问题是,pjax 运行成功,但地图没有加载。(为了加载地图标记,我添加了正在执行但未正确反映的 ajax 调用。)

解决方案:添加 pjax:end 事件

$("#your-div").bind 'pjax:end', ->
  # load you markers or call gmap related event

因此,一旦您的 pjax 完成,您的地图相关事件就会发生。

这可能不是您问题的直接解决方案。但希望这会有所帮助。谢谢。

于 2013-11-07T18:59:26.723 回答