这些是我在插件中使用它们的功能。它在后端工作,但在前端它响应0
。我复制了相同的代码,并且更喜欢admin_enqueue_scripts
与wp_enqueue_scripts
。
add_action( 'wp_ajax_my_action', 'my_action_callback' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );
function my_action_callback() {
global $wpdb;
$whatever = intval( $_POST['whatever'] );
$whatever += 10;
echo $whatever;
wp_die();
}
function testajax(){
var data = {
'action': 'my_action',
'whatever': ajax_object.we_value // We pass php values differently!
};
jQuery.post(ajax_object.ajax_url, data, function(response) {
alert('Got this from the server: ' + response);
});
};
我在onClick
事件中使用过它。
我也用过
add_action( 'admin_enqueue_scripts', 'my_enqueue' );
用于管理员和
add_action( 'wp_enqueue_scripts', 'my_enqueue' );
for frontend
add_action( 'wp_enqueue_scripts', 'my_enqueue' );
function my_enqueue($hook) {
wp_enqueue_script( 'ajax-script', get_stylesheet_directory_uri().'/my_query.js', array('jquery') );
wp_localize_script( 'ajax-script', 'ajax_object',
array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
}
这是我想在自定义页面中加载的脚本,但它不会加载到自定义页面中。对于加载我必须在functions.php中使用它,然后当我在functions.php中使用它时,它将被加载到注释中所说的所有页面中。有问题。
答案 0 :(得分:0)
您尝试拨打的网址是否可能在管理员中不存在?尝试使用ajaxurl
代替ajax_object.ajax_url
答案 1 :(得分:0)
默认情况下,Ajax URL在前端不可用。您必须在使用之前对其进行本地化:
wp_localize_script('my_enqueue', 'ajax_object', array('ajax_url' => admin_url('wp-ajax.php')));