Jquery Pjax - Ajax 成功函数

16

目前我正在将我的ajax调用转换为常规的$.pjax()调用。一切都运行良好,但是ajax成功函数有问题。我无法处理如何使用给定参数调用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!')}
 });
2个回答

13

我不相信 jQuery PJAX 库支持直接在 $.pjax 调用中传递 "success" 函数,尽管我认为您可以通过使用 $(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方法,您可以连接标准的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();
      }
 });

我认为它会提供你需要的功能,你觉得呢?


2
是的,这正是我正在寻找的内容。另一个解决方案也可以是对每个pjax调用使用“.done(function(){console.log()})”后缀,但它可能不适用于成功侦听器。再次感谢您! - even2be
有人能帮我解决这个问题吗?https://stackoverflow.com/questions/49122972/hide-jquery-elements-in-an-ajax-function - TRS7

7
一个晚的答案,但我在这里找到了解决方案
$.pjax({
    url:"/myPage/myFunction",
    type:"POST",
    container:'#right_form',
    data:giveMeData(),        
 }).done(function() { console.log('Success works!') });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接