2015-08-13 8 views
6

voglio solo sapere come ricaricare più pjax? questo è il mio codiceCome ricaricare più pjax

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

ma solo il # con_camp1 è quello che verrà ricaricato.

risposta

13

Prova questo.

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

ho già provo questo, ma la sua fortuna per me. :( –

+0

io voto per questo uso il framework yii e il problema è il widget che uso, ma quando uso altri widget, questo codice funziona –

+0

Sì, funziona @GAMITG ma se il server impiega del tempo per elaborare una di quelle richieste Ajax allora il tuo browser si blocca letteralmente fino a quando non riceve la risposta dal server. – shivgre

0

Quando si utilizza async:false sia Chrome e Firefox stanno gettando in questo modo:

XMLHttpRequest sincrono sul thread principale è obsoleta a causa dei suoi effetti dannosi per l'esperienza dell'utente finale. Per ulteriori informazioni, controlla https://xhr.spec.whatwg.org/.

Un modo diverso per farlo è utilizzare l'evento pjax:end che attiverà quando un contenitore viene completamente ricaricato per registrare il codice che ricaricare il successivo. In questo modo si otterranno ricaricati uno per uno:

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

si può solo fare

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