EDIT: 我发现你的方法有几个问题。
这就是你的案子应该做的,我继续写了一些东西。
function my_button() {
echo
"<script type = \'text/javascript\'>
jQuery( document ).ready( function() {
jQuery(\'input.sendajax\').click( function() {
var sendData = {
action: \'my_action\',
external_id = $postID,
title: \'$post_title\',
content: \'$post_content\'
};
jQuery.post( ajaxurl, sendData, function( response ) {
// You need to send some type of validation back
// Like a \'success\' variable either true or false
// Stuff sent back is accessed through the \'response\' variable, so to get the item sent back called \'success\', you would use \'response.success\'
if( response.success == true ) {
window.open(response.link);
} else {
console.log(response);
}
});
});
})
</script>
<input class=\'sendajax\' type=\'button\' onclick=\'ajaxRequest()\' value=\'Send\' />";
}
add_action( \'admin_head\', \'my_button\');
add_action(\'wp_ajax_my_action\', \'my_action_callback\');
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$api_key = $_POST[\'api_key\'];
$user = wp_get_current_user();
$user_id = $user->ID;
add_user_meta($user_id, \'my_api_key\', $api_key);
$response = array( \'success\' => true, \'link\' => \'this is a response var\' ); // Stuff to send back to AJAX
echo json_encode( $response );
die(); // Needs this
}
如果您仔细阅读法典,并将您的代码与
code here, 他们非常不同。你试图使用一种大多数人认为合适的方法,但WP已经可以为你做这些事情了(直到几天前我才意识到这一点,所以不要难过!)
我所做的是使用WP的本地ajaxurl
和jQuery.post
要调用的方法admin-ajax.php
并发送sendData
将信息发送到将对这些变量执行某些操作的函数,然后回显response
所以你也可以这样做。