2013-05-20 39 views
3

我会注意到这段代码并不是我自己构建的,我只是在已经存在的系统上使用插件来做一些UI更改。

我正在构建一个插件,它利用了blockUI(是的,我需要使用插件构建一个插件),以便在触发Ajax调用时在某些元素上显示加载图标,但是这个特别调用alert()如果success()事件没有得到所需的响应。

这样做的结果是我的加载图标调用​​alert火灾,这是不是我想要做的事。

当我打电话我建立的功能,我通过在$.post()完成我需要的设置和选项,比如:

$.fn.startLoading({    
    element: $("div"), 
    ajax: $.post('some.url', 
    { 
     //Ajax settings... 
    }, function (response) { //This is the success function, right? 
      if (good) { 
       //stuff 
      } 
      else 
       alert("Bad!"); //This happens BEFORE fadeOut() 
     } 
    }, 'text') 
    .error(function (msg) { 
     alert('Worse error!'); 
    }) 
}); 

我的插件的功能通吃的这种作为一个options参数,像这样:

$.fn.startLoading = function (options) { ...

我再访问$.post()电话这样的:

if (options.ajax) 
    ajax = options.ajax; 

这是我卡住的地方。我需要确保​​发生在success事件触发之前。我如何使用我在插件中创建的ajax变量来做到这一点?

+0

语法错误在这里:'ajax:$ .post('some.url'),{'should should remove')' –

+0

刚才看到了,谢谢。现在更新。 – Kehlan

+0

此外,'jqXHR.error'折旧,您应该使用.fail。 –

回答

1

一个简单的方法是ajaxComplete,等的ajaxSuccess http://api.jquery.com/category/ajax/

这些都是全球性的AJAX处理程序抓取通过jQuery发送的所有Ajax请求......所以,你可以在那里设立一个处理程序,并列入白名单,你自己的回调元素等等等等你忽视那些不关心你的事情。

在我的测试中,这些全局处理程序在特定ajax调用的处理程序之前触发。

相关问题