একটি আচরণ থেকে AJAX সম্পূর্ণ ইভেন্ট শুনুন


12

আমার একটি ফর্ম রয়েছে যার একটি এজাক্স বোতাম রয়েছে। আমি যখন এটি ক্লিক করি, এটি প্রত্যাশার মতো একগুচ্ছ জিনিস আপডেট করে যা ভাল।

আমি ভাবছিলাম যে আজেএক্স কলটি সম্পূর্ণ হওয়ার সাথে সাথে এমন আচরণে শ্রোতা তৈরি করার কোনও উপায় আছে যা কল হয়ে যায়?

ধন্যবাদ

উত্তর:


19

হ্যা এখানে :

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
    }
  });
 }
}

2
+1, তবে দ্রুপাল 7 এর জন্য এটি হবেDrupal.behaviors.YourBehaviour = { attach: function() { $('#yourform').ajaxComplete...
ক্লাইভ

আপনি ঠিক বলেছেন: আটকানোর সময় একটি লাইন ভুলে গেছেন!
কাউন্টজারো

2
আপনার এই $ () দরকার নেই কেবল ইভেন্ট.টারাজেট.আইডি আপনি কোনও বস্তুর উল্লেখ করছেন না
নিকোলা

কেন এটি দ্রুপাল আচরণে মোড়ানো?
ram4nd

1
কারণ এটি সেরা অনুশীলন হিসাবে বিবেচনা করা হয় এবং অন্যান্য জিনিসের মধ্যেও নেমস্পেসের সংঘর্ষকে বাধা দেয়।
কাউন্টজারো

11

JQuery 1.8+ এর সংস্করণগুলির জন্য, দেখে মনে হচ্ছে যে আপনাকে এখন .ajaxComplete ফাংশনটি নথিতে সংযুক্ত করতে হবে, ফর্ম বা নিজেই দেখুন নয় (দেখুন http://api.jquery.com/ajaxcomplete/ )

নিম্নলিখিতগুলি আমার জন্য ডি 7-তে জ্যাকিউরি 1.10 এবং ভিউজ 7.x-3.8 সহ কাজ করেছে, যেখানে "আপনার_ভিউ_আইডি" ভিউয়ের "অন্যান্য" সেটিংস প্যানেলে দেখানো মেশিনের নাম। ইভেন্ট, এক্সএইচআর এবং সেটিংসে অন্যান্য অনেক তথ্য রয়েছে যা আপনি চাইছেন এমন মতামতের জন্য এজাক্স ফলাফলটি রয়েছে কিনা তা নির্ধারণ করার জন্য কী অফ করার কী আছে, তবে এটি আমার পরিস্থিতির জন্য কাজ করেছে:

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;

        }
    }

});

4

কোনটি দেওয়া সমাধান সঙ্গে আমার জন্য কাজ Drupal এর 7.24, jQuery এর 1.11 এবং প্রতি 7.x-3.8

কি user1193694 প্রস্তাব খারাপ ছিল না, কিন্তু সেটিংস বস্তু আমি পেয়েছি ছিল না extraData প্যারামিটার।

সেটিংসের অবজেক্টটি বিশ্লেষণ করার সময় আমি দেখেছি সেটিংস.ডাটা যথাযথভাবে ' ভিউ_নাম = ' এবং আপনার দর্শনটির মেশিনের নাম রয়েছে, তাই আমি কী জন্য ফিল্টার করছি তা স্থির করে:

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 ' প্রতিস্থাপন করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.