2014-02-10 9 views
7

Momentan übersetze ich meine Ajax-Anrufe auf reguläre Anruf. Alles funktioniert gut, aber Ajax-Erfolgsfunktion. Ich kann nicht verwalten, wie pjax Erfolgsfunktion mit gegebenen Parametern aufgerufen wird.Jquery Pjax - Ajax Erfolgsfunktion

Das einzige, was ich globalen Erfolg Funktion ist die Definition pjax auf jedem pjax Aufruf aufgerufen werden können:

$(document).on('pjax:success', function(event, data, status, xhr, options) { 

    }); 

Aber leider würde ich spezifische Funktion Erfolg wie definieren pro Anruf.

Ajax-Aufruf Beispiel:

$.ajax({ 
    url:"/myPage/myFunction", 
    type:"POST", 
    data:giveMeData(), 
    success:function(data){$('#right_form').html(data);console.log('Success works!')} 
}); 

Pjax nennen Beispiel:

$.pjax({ 
    url:"/myPage/myFunction", 
    type:"POST", 
    container:'#right_form', 
    data:giveMeData(), 
    success:function(){console.log('Success works!')} 
}); 

Antwort

11

Ich glaube nicht, dass die jQuery PJAX Bibliothek unterstützt eine "Erfolg" Funktion direkt in einem $ .pjax vorbei Anruf, obwohl ich vermute, dass Sie mit dem $(document).on('pjax:success') Callback & sein options Attribut umgehen könnten, um die gleiche Funktionalität zu erreichen.

Zum Beispiel, sagen Sie Ihre Anfrage wie oben ist, aber Sie wollen einen benutzerdefinierten Erfolg Rückruf haben Sie so etwas wie diese verwenden:

$.pjax({ 
    url:"/myPage/myFunction", 
    type:"POST", 
    container:'#right_form', 
    data:giveMeData(), 
    custom_success:function(){console.log('Custom success works!')} 
}); 

Dann, um die custom_success Methode auszuführen Sie haken könnte up the Standard pjax Erfolg Listener, und vorausgesetzt, dass alle Parameter zur Verfügung gestellt $.pjax in Optionen zur Verfügung gestellt werden, können Sie dann greifen custom_success Funktion und führen Sie es aus. So können Sie Ihre Zuhörer etwas wie Beispiel aussehen

$('#right_form').on('pjax:success', function(event, data, status, xhr, options) { 
     // run "custom_success" method passed to PJAX if it exists 
     if(typeof options.custom_success === 'function'){ 
      options.custom_success(); 
     } 
}); 

die ich denke, * * würde die Art von Funktionalität liefern Ihre nach?

+1

Ja, das ist genau das, was ich gesucht habe. Andere Lösung möglicherweise auch ".done (function() {console.log()}" Postfix zu jedem Pjax-Aufruf verwenden, aber es gilt wahrscheinlich nicht für Erfolg Listener. Ein großes "Danke" nochmal :) – user2133627

+0

kann mir jemand mit dieser Frage helfen? https://stackoverflow.com/questions/49122972/hide-jquery-elements-in-an-ajax-function – TRS7

3

Eine späte Antwort, aber ich fand die Lösung here.

$.pjax({ 
    url:"/myPage/myFunction", 
    type:"POST", 
    container:'#right_form', 
    data:giveMeData(),   
}).done(function() { console.log('Success works!') }); 
Verwandte Themen