2012-05-09 12 views
5

Ho un problema, che ho diverse pagine nel mio progetto e ho usato molte richieste Ajax nel mio progetto, ma ora penso che ogni volta che una richiesta Ajax viene chiamata la funzione verrà chiamata e ogni volta che quella richiesta verrà terminata un'altra funzione chiamerà. Come posso fare questo a livello globale, so di poterlo inserire in ogni richiesta di ajax, ma ho bisogno di una soluzione che io faccia in un posto e funzioni per tutto il progetto.come chiamare una funzione specifica su ogni richiesta Ajax

$(document).read(function(){ 
// Suppose this document load function is written on layout page and every page is inherited from this page 
}); 

risposta

4

Usa ajaxSetup, ad esempio

$.ajaxSetup({ 
    beforeSend: function() { 
     console.log('test'); 
    }, 
    complete: function() { 
     console.log('completed'); 
    } 
}); 

installazione verrà beforeSend gestore per ogni richiesta Ajax. Si noti che ajaxSetup può prendere qualsiasi opzione che può essere $.ajax.

+0

dovrei scrivere questo nel documento pronto? – Ahsan

+0

è fatto prima di inviare, ma cosa dovrei scrivere se voglio chiamare una funzione su completa richiesta Ajax? – Ahsan

+0

Dovresti scriverlo all'inizio del file JS (prima di ogni chiamata AJAX). Potresti voler licenziare le richieste AJAX prima che il documento sia pronto, quindi non c'è ragione di metterlo all'interno di '$ (document) .ready (...);'. – freakish

0

provare qualcosa di simile:

$.ajax({ 
    url: "test.html", 
    context: document.body 
}).done(function() { 
    $.ajax({ 
    url: "anotherMethod.html", 
    context: document.body 
    }); 
}); 
}); 

Ciò significa che ogni volta chiamata AJAX ha completato con successo chiamare la chiamata desiderio.

2

È consigliabile creare una funzione wrapper per ajax, quindi utilizzare tale funzione. in questo modo, hai il controllo "centrale" sulla chiamata Ajax. qualcosa di simile:

//fast and crude way to extend jQuery 
$.fn.customAjax = function(params){ 

    //contains defaults and predefined functions 
    var defaults = { 
     complete : function(){...default complete hander...}, 
     beforeSend : function(){...default beforeSend handler} 
     ... 
    } 

    //merge settings 
    var finalParams = $.extend({},defaults,params); 

    //call ajax and return the deferred 
    return $.ajax(finalParams); 
} 

//use it like 
$.customAjax({ 
    url : ..., 
    method : ..., 
    data: ..., 
    complete : function(){...} //redefining in the call will override the defaults 
}); 
+0

Bello! È bello vedere che ti sei occupato anche del differimento usando il reso. – Raghav

1

.ajaxStart

registrare un gestore da chiamare quando inizia la prima richiesta Ajax.

.ajaxSucess

associare una funzione da eseguire ogni volta che una richiesta Ajax completata correttamente.

per doc Particolare: http://api.jquery.com/category/ajax/

Problemi correlati