it-swarm.asia

كود جافا سكريبت (اياكس)

لدي تطبيق مصغر مثل هذا:

class test_widget extends WP_Widget{

  function test_widget(){
    $widget_ops = array('description' => 'test widget');
    $this->WP_Widget(false, 'Test', $widget_ops);

    add_action('init', array(&$this, 'ajax'), 99);

    // include in jQuery(document).ready()
    add_action('jquery_init', array(&$this, 'js'));
  }

  function js(){
    // get settings from all widget instances
    $widget_settings = get_option($this->option_name);

    // identify this instance
    foreach($widget_settings as $instance => $options):

      $id = $this->id_base.'-'.$instance;
      $block_id = 'instance-'.$id;

      if (is_active_widget(false, $id, $this->id_base)): ?>

      $("#<?php echo $block_id; ?> .button").click(function(){

        $.ajax({
          type: "GET",
          url: "<?php echo get_bloginfo('url'); ?>",
          data: { id: "<?php echo $block_id; ?>",
                  some_data: "<?php echo $options['some_widget_option']; ?>",
                  my_widget_ajax: 1 },
          success: function(response){
             alert(response);
             // yey
          }
        });
        return false;

      });

      <?php endif;
    endforeach;
  }

  function ajax(){
    if(isset($_GET['my_widget_ajax'])):

      $some_data = esc_attr($_GET['some_data']);

      echo $some_data;
      exit();
    endif;
  }

  function widget($args, $instance){
    // the widget front-end

  }

  function update($new_instance, $old_instance){
    // update form
    return $instance;
  }

  function form($instance){
    // the form
  }
}

في الأساس يوجد زر فيه يؤدي إلى طلب ajax يسترجع بعض المعلومات ...

كما ترون الطريقة الوحيدة التي تمكنت من إضافة وظيفة ajax هي ربطها بعلامة init ، و js إلى دالة السمة التي تعالج javascript.

المشكلة هي أن هذا يعمل فقط عند وجود عنصر واجهة المستخدم في شريط جانبي. وأحتاج أيضًا إلى العمل عندما أسمي هذه الأداة باستخدام the_widget () وظيفة ، على سبيل المثال. داخل الصفحة. لا أعرف كيف يمكنني استرجاع خيارات عنصر واجهة المستخدم لتمريرها في كود جافا سكريبت ...

أيه أفكار؟

1
Alex

المشكلة هي أن هذا يعمل فقط عند وجود عنصر واجهة المستخدم في شريط جانبي.

إذا كنت بحاجة إلى بعض التعليمات البرمجية لتشغيلها بشكل مستقل عن عنصر واجهة المستخدم ، فأنا أسبب أنه من المنطقي إضافة هذه الشفرة بشكل منفصل عن فئة عنصر واجهة المستخدم.

وأحتاج أيضًا إلى العمل عندما أسمي هذه الأداة باستخدام الدالة the_widget () ، على سبيل المثال. داخل الصفحة. لا أعرف كيف يمكنني استرجاع خيارات عنصر واجهة المستخدم لتمريرها في كود جافا سكريبت ...

هذه الوظيفة تأخذ مجموعة مثيل مع بيانات القطعة. لست متأكدًا من تفاصيلك ، لكنني أعتقد أنه يمكنك تمرير كل ما تحتاجه هناك.

لا يُسمح لعنصر واجهة التعامل الذي تم الاتصال به مباشرة ، بخلاف ما تم تمريره في المثال (أو تم استرجاعه بنفسه).

0
Rarst