2014-01-19 25 views
0

使用jQuery的Ajax功能:Ajax請求,如何調用除「成功」之外的其他函數?

$.ajax({ 
    url: ..., 
    success: function(){ 
     ... 
    }, 
    ... 
}); 

我需要的只是success函數的每次調用之前執行一些代碼(但響應後,已經收到)。 我想這個success函數被觸發就像一個事件,所以有沒有辦法讓其他函數調用來代替success

+0

你可以用完成的第一條語句調用該函數 – kmera

+0

你有沒有嘗試beforeSend? –

+0

@AndyHolmes不,我從來沒有使用它,但實際上我想要執行的代碼在完成回調必須處理響應內容之前執行,所以我認爲beforeSend函數無法完成它,不是嗎? – Fractaliste

回答

0

我通過自定義函數像更換$.ajax()只是成功的人之前調用的其他功能成功:

function mYajax(options) { 
    var temporaryVariable = options.success; 

    options.success = function() { 
     console.log('Custom') 
     if (typeof temporaryVariable === 'function') 
      temporaryVariable() 
    }; 
    return $.ajax(options); 
} 

$('button').click(function() { 
    mYajax({ 
     url: "/echo/json/", 
     data: { 
      foo: "bar" 
     }, 
     success: function (data, textStatus, jqXHR) { 
      console.log('succeed action'); 
     }, 

    }); 
}); 
0

你也可以調用其他的功能就在所做的biginning:

$.ajax({ 
    url: ..., 
    done: function(){ 
     someOtherFunction(); 
    }, 
    ... 
}); 

這應該差不多完成什麼,你在你的問題描述。

+0

謝謝,但我的問題的目的實際上是爲了避免編輯我的數百個成功,錯誤處理程序作爲你的命題。 – Fractaliste

1

您可以使用Global Ajax Event Handlers方法來執行此操作。

聽起來像是你可能想使用AjaxComplete

$(document).ajaxComplete(function(){ 
    // do something here when ajax calls complete 
}); 

被警告 - 這會爲每個頁面上的jQuery的AJAX調用發生......

+0

Link的死夫家 –

+1

@AndyHolmes對不起,剪切和粘貼。更新和修復。 – tkone

+0

我做了一些測試,但'ajaxComplete'在'success'或'error'處理程序之後被調用嗎? – Fractaliste

0

是beforeSend你在找什麼:

$.ajax({ 
    url: "...", 
    beforeSend: function (x) { 
     //do something before the the post/get 
    } 
}).done(function (data) { 
    //done code 
}); 
+0

我不會在我的問題中說,但我想要在完成回調之前執行的代碼必須處理響應內容。 – Fractaliste

+0

哦,我明白了,我沒有從你的問題中得到答案 – kmera

相關問題