Javascript 如何在单击子菜单页面时发出ajax请求?
我在function.php中有以下菜单页和一个子页:Javascript 如何在单击子菜单页面时发出ajax请求?,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我在function.php中有以下菜单页和一个子页: function data_menu() { add_menu_page( 'Data', 'Data', 'administrator', 'data', 'data_content' ); add_submenu_page( 'Data' , 'Data', 'Data'
function data_menu() {
add_menu_page(
'Data',
'Data',
'administrator',
'data',
'data_content'
);
add_submenu_page(
'Data' ,
'Data',
'Data',
'manage_options',
'data',
'data_content'
);
}
add_action('admin_menu', 'data_menu');
function admin_scripts() {
wp_enqueue_script('my_custom_script', get_template_directory_uri() . '/js/script.js');
}
add_action('admin_enqueue_scripts', 'admin_scripts');
window.onload = function(){
$(document).on('click', '#toplevel_page_data ul.wp-submenu li:last-of-type', function() {
console.log('menu clicked');
$.post('file path', {},
function(data){
console.log(data)
});
});
};
我想向一个PHP文件发送一个Ajax请求,因此我在function.PHP中向管理仪表板添加了javascript文件:
function data_menu() {
add_menu_page(
'Data',
'Data',
'administrator',
'data',
'data_content'
);
add_submenu_page(
'Data' ,
'Data',
'Data',
'manage_options',
'data',
'data_content'
);
}
add_action('admin_menu', 'data_menu');
function admin_scripts() {
wp_enqueue_script('my_custom_script', get_template_directory_uri() . '/js/script.js');
}
add_action('admin_enqueue_scripts', 'admin_scripts');
window.onload = function(){
$(document).on('click', '#toplevel_page_data ul.wp-submenu li:last-of-type', function() {
console.log('menu clicked');
$.post('file path', {},
function(data){
console.log(data)
});
});
};
在该文件中script.js:
function data_menu() {
add_menu_page(
'Data',
'Data',
'administrator',
'data',
'data_content'
);
add_submenu_page(
'Data' ,
'Data',
'Data',
'manage_options',
'data',
'data_content'
);
}
add_action('admin_menu', 'data_menu');
function admin_scripts() {
wp_enqueue_script('my_custom_script', get_template_directory_uri() . '/js/script.js');
}
add_action('admin_enqueue_scripts', 'admin_scripts');
window.onload = function(){
$(document).on('click', '#toplevel_page_data ul.wp-submenu li:last-of-type', function() {
console.log('menu clicked');
$.post('file path', {},
function(data){
console.log(data)
});
});
};
然后,当我单击菜单时,控制台中记录了菜单单击的句子
我认为问题在于,在打开页面之前,Ajax请求没有花足够的时间完成
页面URL变为:
http://website.com/wp-admin/admin.php?page=data
是否有一种方法可以在单击菜单时发出Ajax请求?在您想要跟踪视图的页面上发出Ajax请求,而不是听菜单按钮的单击,这难道不容易吗
$( document ).ready(function() {
// ajax request
});
否则,如果您真的想在菜单单击上发布请求,您必须拦截菜单单击,以便它在路由之前发出请求。比如:
$('.menu-link').click(function (e) {
e.preventDefault(); // otherwise, it won't wait for the ajax response
$link = $(this); // because '$(this)' will be out of scope in your callback
$.ajax({
type: 'POST',
url: '/url-to-post-to',
data: mydata,
contentType: 'application/json',
error: function (err) {
alert("error - " + err);
},
success: function () {
window.location.href = $link.attr('href');
}
});
});
信用证:你是什么意思?是否要在发送到您单击的页面之前发送ajax请求?我想在单击该菜单或管理员查看该菜单页面时发送请求