Wordpress Ajax - 返回0

时间:2017-07-14 03:28:21

标签: ajax wordpress

总是返回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>

enter image description here

3 个答案:

答案 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您的代码是正确的,只能将您的整个代码写入您在插件中声明的函数中。