2014-02-10 145 views
7

目前我正在翻譯我的阿賈克斯電話,以撥打正常$.pjax()電話。一切正常,但阿賈克斯成功功能。我無法管理如何使用給定參數調用pjax成功函數。jquery pjax - 阿賈克斯成功功能

我可以使用被定義pjax全球成功函數唯一被稱爲每個pjax電話:

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

    }); 

但不幸的是,我想每個呼叫的具體成功的功能來定義。

Ajax調用例如:

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

Pjax致電例如:

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

回答

11

我不認爲jQuery的PJAX庫支持直接到$ .pjax傳遞一個 「成功」 的功能呼叫,雖然我懷疑你可以使用$(document).on('pjax:success')回調& options屬性來解決此問題,以實現相同的功能。

例如,假設你的要求就像上面,但你想有,你可以使用類似這樣的自定義成功回調:

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

然後,爲了運行custom_success方法,你可以掛鉤up標準pjax成功監聽器,並且提供給$.pjax的所有參數都在選項中提供,那麼您可以抓取custom_success函數並運行它。所以你的聽衆可能看起來像例

$('#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(); 
     } 
}); 

我*認爲*會提供你的功能之後的那種?

+1

是的,這是我非常想找的東西。 其他解決方案可能也會對每個pjax調用使用「.done(function(){console.log()})」postfix,但它並不適用於成功偵聽器。 一個大「再次感謝」:) – user2133627

+0

任何人都可以幫助我解決這個問題嗎? https://stackoverflow.com/questions/49122972/hide-jquery-elements-in-an-ajax-function – TRS7

3

答案很晚,但我找到了解決方案here

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