У меня есть ранее зарегистрированное действие 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
Я не уверен, что я делаю не так?