मेरे पास एक फॉर्म है जिसमें AJAX बटन है। जब मैं इसे क्लिक करता हूं, तो यह अपेक्षित रूप से सामान का एक गुच्छा अपडेट करता है।
मैं सोच रहा था कि क्या व्यवहार में एक श्रोता बनाने का एक तरीका है जिसे AJAX कॉल पूरा होने पर बुलाया जाता है?
धन्यवाद
मेरे पास एक फॉर्म है जिसमें AJAX बटन है। जब मैं इसे क्लिक करता हूं, तो यह अपेक्षित रूप से सामान का एक गुच्छा अपडेट करता है।
मैं सोच रहा था कि क्या व्यवहार में एक श्रोता बनाने का एक तरीका है जिसे AJAX कॉल पूरा होने पर बुलाया जाता है?
धन्यवाद
जवाबों:
हाँ वहाँ है :
Drupal.behaviors.YourBehaviour = {
attach: function(context, settings) {
$('#yourform').ajaxComplete(function(event, xhr, settings) {
if ($(event.target.id) == 'the-id-of-your-item') {
// Your code here
}
});
}
}
JQuery 1.8+ के संस्करणों के लिए, ऐसा लगता है कि अब आपको दस्तावेज़ में .ajaxComplete फ़ंक्शन संलग्न करना होगा, न कि फ़ॉर्म या स्वयं देखें (देखें http://api.jquery.com/ajaxcomplete/ )
निम्नलिखित ने मेरे लिए D7 पर Jquery 1.10 और दृश्य 7.x-3.8 के साथ काम किया, जहां "your_view_id" दृश्य के "अन्य" सेटिंग पैनल में सेट किए गए दृश्य का मशीन नाम है। घटना, xhr और सेटिंग्स में बहुत सी अन्य जानकारी है जो यह निर्धारित करने के लिए महत्वपूर्ण है कि क्या अजाक्स का परिणाम आपके इच्छित दृश्य के लिए है, लेकिन यह मेरी स्थिति के लिए काम करता है:
jQuery(document).ajaxComplete(function(event, xhr, settings) {
if(typeof settings.extraData != 'undefined' && typeof settings.extraData.view_display_id != 'undefined') {
switch(settings.extraData.view_display_id){
case "your_view_id":
console.log('your_view_id ajax results!');
break;
default:
console.log('some other ajax result...');
break;
}
}
});
कोई नहीं दिए गए समाधान के साथ मेरे लिए काम किया ड्रुपल 7.24, jQuery 1.11 और दृश्य 7.x-3.8 ।
क्या user1193694 सुझाव बुरा नहीं था, लेकिन सेटिंग्स आपत्ति है कि मैं प्राप्त नहीं था extraData पैरामीटर।
सेटिंग ऑब्जेक्ट को पार्स करते समय मैंने देखा कि settings.data प्रॉपरिटी में ' view_name = ' और आपके व्यू की मशीन का नाम शामिल है, इसलिए मैं इसके लिए फ़िल्टर कर रहा हूं।
jQuery(document).ajaxComplete(function(event, xhr, settings) {
// see if it is from our view
if (settings.data.indexOf( "view_name=your_views_name") != -1) {
console.log('your_view_id ajax results!');
}
});
अपने दृश्य के मशीन नाम के साथ ' your_views_name ' बदलें ।
Drupal.behaviors.YourBehaviour = { attach: function() { $('#yourform').ajaxComplete...