2015-08-13 79 views
6

我只想知道如何重新加載多個pjax?這是我的代碼如何重新加載多個pjax

 $.pjax.reload({container:"#con_camp"}); 
     $.pjax.reload({container:"#con_camp1"}); 

但只有#con_camp1是將要重新加載的那個。

回答

13

試試這個。

$.pjax.reload({container: "#1-pjax", async:false}); 
    $.pjax.reload({container: "#2-pjax", async:false}); 
+0

我已經嘗試,但它沒有運氣我。 ( –

+0

我投這個。我使用yii框架,問題是我使用的小工具,但是當我使用其他小工具時,此代碼工作 –

+0

是的,這工作@GAMITG,但如果服務器需要時間來處理任何這些ajax請求那麼你的瀏覽器會直接掛起,直到它收到來自服務器的響應。任何解決方法? – shivgre

0

當使用async:false器和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

你可以只是做

$.pjax.reload({container: '#container_1'}).done(function() { 
    $.pjax.reload({container: '#container_2'}); 
});