wordpress我自己的插件:ajax总是返回0

时间:2015-09-14 21:52:05

标签: ajax wordpress wordpress-plugin

我写了一个使用ajax的插件。该插件应该允许用户(如果登录或不登录)删除数据库上的值。

我的问题是,ajax响应总是为NULL,我不明白为什么!我用谷歌搜索了几个小时,我试着翻转......这是我的脚本:

function my_script_enqueuer(){

    global $post; 
    $content = $post->post_content;
    if(has_shortcode($content, 'shortcode')){
        wp_register_script('my_script', 
            WP_PLUGIN_URL.'/my-plugin/js/my-plugin.js',
            array('jquery'));

        wp_localize_script('my_script',
            'myAjax', 
            array( 'ajaxurl' => admin_url('admin-ajax.php')));

        wp_enqueue_script('jquery');
        wp_enqueue_script('my_script');
    } 
}

add_action( 'wp_enqueue_scripts', 'my_script_enqueuer' );

add_action('wp_ajax_del_value', 'del_value');
add_action('wp_ajax_nopriv_del_value', 'del_value');

function del_value(){

    $val = $_POST['val'];
    echo $val;

    //$wpdb->...an so on
    die();
}

在这里我的ajax(my_plugin.js)

jQuery(document).ready( function(){
jQuery(document).on('click', '.delval',  function($){   

    var val = this.id;

        jQuery.ajax({
                    type: "POST",
                    url: myAjax.ajaxurl,
                    data: {action:"del_value", val: val},
                    success: function(response){
                        if(response.type = "success"){
                            console.log(response);
                        }else{
                            console.log("Error");
                        }
                    }

                });
});

});

2 个答案:

答案 0 :(得分:0)

问题不在于此处的代码。我复制了提供的示例,它对我有用。

当我在过去遇到这样的问题时,通常会归结为两个问题之一:

  1. 浏览器认为这是跨域请求。解决方案:确保myAjax.ajaxurl中的域与您在浏览器位置栏中看到的域匹配。
  2. jQuery没有正确解释响应的mime类型。您没有指定返回类型。解决方案:尝试在jQuery.ajax调用中包含一个dataType:“text”键/对;或尝试将响应编码为JSON。

答案 1 :(得分:0)

知道了!我的整个脚本中有两次相同的变量(不同的用法)。不幸的是,

add_action('wp_ajax_nopriv_del_value', 'del_value');

......是......

  add_action('wp_ajax_nopriv_my_del_value', 'del_value');

...在我的剧本中。

很抱歉。我希望我的剧本有时会以某种方式帮助别人。

电贺, Yab86