总是返回0,我已经查看了其他答案,但没有任何帮助。 其他人可以帮我找到解决方案吗?
插件代码:
function testOne(){
require_once plugin_dir_path( __FILE__ ) . "do.php";
}
add_shortcode( 'testOne' , 'testOne' );
od.php:
<?php
add_action( 'wp_ajax_myfun', 'myfun' );
add_action( 'wp_ajax_nopriv_myfun', 'myfun' );
function myfun() {
echo 'Test';
wp_die();
}
?>
<script>
$( document ).ready(function() {
$.ajax({
type:"POST",
url: ajaxurl,
data: {
action: "myfun",
},
success:function(data){
alert(data);
}
});
});
</script>
主题中的header.php:
<script type='text/javascript'>
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>
答案 0 :(得分:1)
尝试以下代码:
<script>
jQuery(document).ready(function() {
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {
'action':'myfun',
},
success: function (data) {
alert(data);
}
});//end ajax
});
</script>
在主题的functions.php
中加入ajax函数add_action( 'wp_ajax_nopriv_myfun', 'myfun' );
add_action( 'wp_ajax_myfun', 'myfun' );
if( !function_exists('myfun') ):
function myfun(){
echo 'Test';
exit();
}
endif;
希望这会有所帮助!
答案 1 :(得分:0)
似乎ajaxurl变量存在一些问题。
我建议您为脚本标记之间的所有代码创建一个单独的javascript文件,然后将该脚本排入队列并使用ajaxurl进行本地化。
以下是本地化的示例代码: -
wp_register_script( 'my-cstm-script', 'script_url_path', array( 'jquery' ) );
wp_enqueue_script( 'my-cstm-script' );
wp_localize_script( 'my-cstm-script', 'MyCstmVar', array( 'ajaxurl' => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ), ) );
在此之后请在php文件中,包括该页面,只需添加您的功能代码并检查这是否有效。
如果您需要进一步的帮助,请与我们联系。
答案 2 :(得分:0)
@ user3231235您的代码是正确的,只能将您的整个代码写入您在插件中声明的函数中。