2016-03-23 13 views
2

Während ich den popstate in pjax verwende, möchte ich, dass der Inhalt wieder vom Server geladen wird, anstatt durch zwischengespeicherten Inhalt des Browsers ersetzt zu werden. Wenn der zwischengespeicherte Inhalt angewendet wird, funktioniert die <script> innerhalb des zwischengespeicherten Inhalts überhaupt nicht. Gibt es eine Möglichkeit, einen normalen PJAX-Aufruf an den Server zu erzwingen, anstatt die zwischengespeicherten Daten zu verwenden, wenn wir einfach auf die Schaltflächen Zurück/Vorwärts des Browsers drücken?Wie pjax: popstate funktioniert wie ein einfacher PJAX-Aufruf

Bitte helfen. Danke.

Antwort

2

bemerken vorsichtig Linie 476-491 in der Datei jquery.pjax.js hier in diesem Link: jQuery PJAX by Chris Wanstrath (defunkt). Die Codes unter der if ruft tatsächlich die im Cache gespeicherten Inhalte und der Code unter der else Teil ist, was wir nur wollen.

if (contents) { 
    container.trigger('pjax:start', [null, options]) 

    pjax.state = state 
    if (state.title) document.title = state.title 
    var beforeReplaceEvent = $.Event('pjax:beforeReplace', { 
     state: state, 
     previousState: previousState              
    })                     
    container.trigger(beforeReplaceEvent, [contents, options])       
    container.html(contents) 

    container.trigger('pjax:end', [null, options]) 
    } else { 
     pjax(options) 
    } 

So, jetzt wissen Sie, was wir tun werden! Ja, entfernen Sie einfach alles außer dieser Zeile:

pjax(options) 

und Sie sind gut zu gehen! Es ist seltsam, dass mir niemand diese Lösung gegeben hat. Aber ich habe endlich eine Lösung gefunden, und ich denke, das wird vielen Menschen helfen.

Danke, wie auch immer.

0

Keine Änderung der Quelle erforderlich. Sie können pjax konfigurieren erneut vom Server zu laden, anstatt den Cache der Verwendung von seiner maxCacheLength auf 0

$.pjax.defaults.maxCacheLength = 0;

Einstellung