我在wordpress中制作了以下ajax帖子:
(function($) {
$('.selectas').change(function() {
action = 'post_selectas',
data = {option : selectedValue};
jQuery.post(ajaxurl, data, function(response) {
console.log("Duomenys issiusti !" + response);
});
});
})(jQuery);
然后ajax发布在这个页面,控制台说它工作但我无法捕捉到信息......这是我的所有功能
function select_skript() {
if (is_admin() ) {
$scriptsrc = get_stylesheet_directory_uri() . '/dist/scripts/';
wp_register_script( 'selectas', $scriptsrc . 'selectas.js', 'jquery', '1.0', true );
wp_enqueue_script( 'selectas' );
$translation_array = array( 'templateUrl' => get_stylesheet_directory_uri() );
wp_localize_script( 'selectas', 'selectas_js', $translation_array );
}
}
add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\\select_skript' );
function post_selectas(){
$id_nr = $_REQUEST['data'];
$ids = $_POST['data'];
return "$id_nr or $ids";
return "test";
}
函数不返回任何数据测试或ids ....问题在哪里???
答案 0 :(得分:0)
试试这个:
<?php
add_action( 'admin_enqueue_scripts', 'select_skript' );
function select_skript() {
if (is_admin() ) {
$scriptsrc = get_stylesheet_directory_uri() . '/dist/scripts/';
wp_register_script( 'selectas', $scriptsrc . 'selectas.js', 'jquery', '1.0', true );
wp_enqueue_script( 'selectas' );
$translation_array = array(
'templateUrl' => get_stylesheet_directory_uri(),
);
wp_localize_script( 'selectas', 'selectas_js', $translation_array );
}
}
add_action( 'wp_ajax_post_selectas', 'post_selectas_callback' );
function post_selectas_callback(){
$id_nr = $_REQUEST['data'];
$ids = $_POST['data'];
// return "$id_nr or $ids"; // the or in return won't work; see http://stackoverflow.com/a/14394447/629127
echo "test";
die();
}
根据AJAX in Plugins,您需要将函数挂钩到wp_ajax_{function_name}
hook。
add_action( 'wp_ajax_post_selectas', 'post_selectas_callback' );
你错过die()
(或wp_die()
,应该是相同的)立即终止并返回正确的回复。