AJAX模板渲染后的PJAX

时间:2014-09-30 21:36:47

标签: javascript jquery html ajax pjax

我有一个使用jQuery和pjax(独立)的应用程序。我们正试图尝试看看我们是否可以使用可能更灵活,更小的npm pjax而不是jquery-pjax。

我的一个函数在加载数据后设置div的html,这个html包含我们想要作为pjax链接的链接,例如$('#link-container').html('<a href="/account_detail.html?='+account.id+'" data-pjax >')。但是,单击此链接会导致整页重新加载而不是pjax请求。

有没有办法重新实现pjax?当我在pjax:success调用(来自项目页面的DOMReady - https://www.npmjs.org/package/pjax)中尝试new PJAX({elements:[a[data-pjax]]})时,它使用pjax ...但随后加载资源两次。

也许最好的解决方案是使用jquery-pjax($(document).pjax(一个[data-pjax]等)但是我想知道是否有人之前遇到过这种类型的问题。也许这种情况很少见包括jQuery和非jQuery pjax,但似乎这可能发生在任何异步数据查询和DOM修改,我只想重新PJAX。

1 个答案:

答案 0 :(得分:0)

我使用的是jquery-pjax,当您使用它或配置错误时 - 它也会刷新页面,因此您遇到了我遇到过的问题之一。

无论如何,我不确定它是否会对您的问题有所帮助,但我建议大家将Firefox与Firebug一起使用,并在&#34; Console&#34;选项卡点击&#34;坚持&#34;你经常会发现一些可能有用的错误,因为某处的错误可能会导致页面刷新 - 有时你会错过它,因为控制台也会被刷新。

我学到的是你在写作时需要确保:

<a href="/account_detail.html?=2" data-pjax>bla</a>

你需要一个容器--PJAX将内容放入,例如:

<div id="pjax-container"></div>

最初配置PJAX来绑定这些对象:

<script>
  // this is how I define it in jquery-pjax, so adjust it as you use it.
  $(document).pjax('a[data-pjax]', '#pjax-container');
</script>

所以我学到的关键点会导致PJAX刷新:

  • 我发送了两次标题(后端代码)
  • 突然从HTML正文中删除了容器(div id =&#34; pjax-container&#34;),当缺少DOM时,它没有 放弃HTML的地方 - 所以它只是刷新页面。
  • 当我最初使用jQuery绑定a [data-pjax]时,新的DOM对象不会被jQuery自动重新绑定(除非使用&#34; live / on&#34;),因此它们充当常规{ {1}}使用新网址标记并重新加载页面。
  • 一些JS / PJAX语法错误

在你的情况下,如果pjax-container是&#34; #link-container&#34;我不确定将标签放在其中是否是个好主意。