Я получаю «Uncaught TypeError: Illegal invocation» при попытке вызвать мою ajax функцию из wp-admin - PullRequest
0 голосов
/ 04 мая 2020

У меня есть ранее зарегистрированное действие ajax, которое я вызываю из интерфейса без ошибок.

my_plugin. php

add_action( 'wp_ajax_my_action', 'ajax_my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'ajax_my_action' );

function ajax_my_action() {

    ...
}

Я хотел бы использовать ту же самую функцию ajax в виджете панели мониторинга, который я определил и который включен в my_plugin. php:

dashboard_widget. php

class Dashboard_Widget {

    public function __construct() {

        add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widget' ) );

    }

    public function add_dashboard_widget() {

        wp_add_dashboard_widget(
            'my_dashboard_widget',
            __( 'My Dashboard Widget', 'text_domain' ),
            array( $this, 'render_dashboard_widget' ),
            array( $this, 'save_dashboard_widget' )
        );

    }

    public function render_dashboard_widget() {

        echo '<h2>My Widget</h2>';
        echo '<input size="70" type="text" name="address" id="address" class="input" placeholder="E.g. 465 Oxford Street, Paddington NSW" autocomplete="off">';
        echo '<a href="#" id="do_ajax" class="button" role="button">Go</a>';
    }

    public function save_dashboard_widget() {


    }

}

new Dashboard_Widget;



add_action( 'admin_footer', 'my_dashboard_widget_javascript' );

function my_dashboard_widget_javascript() { ?>
    <script type="text/javascript" >        
        jQuery(document).ready(function($) {
            jQuery(document).on( 'click', '#do_ajax', function(){
                var data = {
                    'action': 'ajax_my_action',
                    'address': address
                };

                jQuery.post(ajaxurl, data, function(response) {
                    alert('Got this from the server: ' + response);
                });
            });
        });
    </script> <?php
}

Виджет панели инструментов загружается, но когда я нажимаю на ссылку (# do_ ajax), в консоли появляется следующая ошибка:

https://fibremax.launchdevsites.com.au/wp-admin/load-scripts.php?c=1&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=5.4.1


Uncaught TypeError: Illegal invocation
    at e (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:4)
    at cc (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:4)
    at cc (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:4)
    at cc (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:4)
    at Function.n.param (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:4)
    at Function.ajax (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:4)
    at Function.n.<computed> [as post] (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:4)
    at HTMLAnchorElement.<anonymous> (index.php:658)
    at HTMLDocument.dispatch (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:3)
    at HTMLDocument.r.handle (load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.4.1:3)

Я использую следующий кодекс https://codex.wordpress.org/AJAX_in_Plugins

Я не уверен, что я делаю не так?

...