我只是想知道如何重新加载多个pjax?这是我的代码
$.pjax.reload({container:"#con_camp"});
$.pjax.reload({container:"#con_camp1"});
但只有#con_camp1才会重新加载。
答案 0 :(得分:16)
试试这个。
$.pjax.reload({container: "#1-pjax", async:false});
$.pjax.reload({container: "#2-pjax", async:false});
答案 1 :(得分:5)
你可以做到
$.pjax.reload({container: '#container_1'}).done(function () {
$.pjax.reload({container: '#container_2'});
});
答案 2 :(得分:5)
不幸的是,Pjax设计并不允许多个请求。为了完成这些操作,您必须使xhr
中的$.pjax
参数无效。
基本上是这样的:
$.pjax.reload({container:"#con_camp"});
$.pjax.xhr = null;
$.pjax.reload({container:"#con_camp1"});
$.pjax.xhr = null; // so that some next pjax request wont cancel this reload.
答案 3 :(得分:2)
使用async:false
时,Chrome和Firefox都会抛出这个:
主线程上的同步XMLHttpRequest因不推荐使用 它对最终用户的体验产生不利影响。如需更多帮助, 检查https://xhr.spec.whatwg.org/。
另一种方法是使用pjax:end事件,该事件将在完全重新加载容器时触发,以注册将重新加载下一个容器的代码。这样他们就可以逐个重新加载:
var pjaxContainers = ['#pjax-block-1', '#pjax-block-2', '#pjax-block-3'];
$.each(pjaxContainers , function(index, container) {
if (index+1 < pjaxContainers.length) {
$(container).one('pjax:end', function (xhr, options) {
$.pjax.reload({container: pjaxContainers[index+1]}) ;
});
}
});
$.pjax.reload({container: pjaxContainers[0]}) ;
答案 4 :(得分:0)
要添加到.images img, .images p {
display:block;
}
解决方案中的东西,因为它本身就有一个错误-它将允许更早但运行时间更长的请求在随后的,运行速度更快的请求之后将响应数据加载到目标容器中。这显然是意外行为。用户希望将最新的点击加载到容器中。
解决方案是在下一个pjax事件可以访问的位置添加对先前xhr对象的引用。我使用窗口名称空间
$.pjax.xhr=null
答案 5 :(得分:0)
我也遇到过同样的问题,
<?php Pjax::begin(['id'=>'pjax_id']); ?>
<?php Pjax::end(); ?>
// Under SCRIPT tag
$.pjax.reload({container: '#pjax_id', async: false});