2012-05-09 10 views
5

मुझे कोई समस्या है, मेरे पास मेरे प्रोजेक्ट में कई पेज हैं और मैंने अपने प्रोजेक्ट में बहुत सारे AJAX अनुरोधों का उपयोग किया, लेकिन अब मुझे लगता है कि जब भी AJAX अनुरोध को कॉल किया जाता है फ़ंक्शन कॉल किया जाएगा और जब भी वह अनुरोध समाप्त होता है तो दूसरा फ़ंक्शन कॉल करेगा। मैं इसे वैश्विक स्तर पर कैसे कर सकता हूं, मुझे पता है कि मैं इसे हर AJAX अनुरोध में डाल सकता हूं लेकिन मुझे एक समाधान की आवश्यकता है जो मैं एक ही स्थान पर करता हूं और यह पूरे प्रोजेक्ट पर काम करता है।प्रत्येक AJAX अनुरोध पर एक विशिष्ट फ़ंक्शन को कैसे कॉल करें

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

उत्तर

4

उपयोग ajaxSetup, उदाहरण के

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

इच्छा सेटअप हर ajax अनुरोध के लिए beforeSend हैंडलर के लिए। ध्यान दें कि ajaxSetup कोई विकल्प ले सकता है जो $.ajax कर सकते हैं।

+0

क्या मुझे इसे दस्तावेज़ में तैयार करना चाहिए? – Ahsan

+0

इसे भेजने से पहले किया गया है, लेकिन अगर मैं AJAX अनुरोध को पूरा करने पर एक फ़ंक्शन कॉल करना चाहता हूं तो मुझे क्या लिखना चाहिए? – Ahsan

+0

आपको इसे जेएस फ़ाइल की शुरुआत में लिखना चाहिए (किसी भी AJAX कॉल से पहले)। दस्तावेज तैयार होने से पहले आप एजेक्स अनुरोधों को आग लगाना चाहेंगे, इसलिए इसे '$ (दस्तावेज़) .ready (...);' के अंदर रखने का कोई कारण नहीं है। – freakish

0

कुछ इस तरह का प्रयास करें:

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

इसका मतलब है कि जब भी ajax कॉल सफलतापूर्वक अपनी इच्छा कॉल फोन पूरा किया।

2

आपको अपने AJAX के लिए एक रैपर फ़ंक्शन बनाना चाहिए, फिर उस फ़ंक्शन का उपयोग करें। इस तरह, आपके पास AJAX कॉल पर "केंद्रीय" नियंत्रण है। कुछ की तरह: जब पहली Ajax अनुरोध शुरू होता है

//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

अच्छा! यह देखने के लिए अच्छा है कि आपने वापसी का उपयोग करके स्थगित भी ख्याल रखा। – Raghav

1

.ajaxStart

हैंडलर रजिस्टर कहा जाता है।

.ajaxSucess

संलग्न जब भी एक Ajax अनुरोध को सफलतापूर्वक पूरा एक समारोह निष्पादित किया जाना है।

विस्तार से दस्तावेज़ के लिए

: http://api.jquery.com/category/ajax/

संबंधित मुद्दे