放置在插件中时AJAX功能不起作用

时间:2012-02-09 12:30:10

标签: ajax wordpress wordpress-plugin

我有一个简单的AJAX函数,我放在我的主题的functions.php中。它工作正常,并且“working”正确地返回到jQuery ajax请求,所以事情的一面很好。

但是,当相同的功能放入插件时,它不再有效,只返回0.

function addCustomer(){

    echo "working";
    die();

}
add_action('wp_ajax_addCustomer', 'addCustomer');
add_action('wp_ajax_nopriv_addCustomer', 'addCustomer');

我也尝试将动作挂钩放在一个     if(is_admin()) 正如在this tutorial中所建议的那样,但没有运气。

我想我可能会忽略一些非常明显的东西,但我无法弄明白。任何帮助表示赞赏,因为我现在谷歌搜索了几个小时。

编辑:这是我正在使用的AJAX调用:

<script type="text/javascript">
                        jQuery('#newCustomerForm').submit(ajaxSubmit); 

                        function ajaxSubmit(){

                            var newCustomerForm = jQuery(this).serialize();

                            jQuery.ajax({
                                type:"POST",
                                url: "/wp-admin/admin-ajax.php",
                                data: newCustomerForm,
                                success:function(data){
                                    jQuery("#feedback").html(data);
                                },
                                error: function(errorThrown){
                                    alert(errorThrown);
                                }   
                            });

                            return false;
                        }

但我确信这一点很好,因为当接收函数放在functions.php中时,它工作得很好,而不是放在一个单独的插件中。

2 个答案:

答案 0 :(得分:1)

我也有同样的问题但是在调试(firebug)中运行时遇到404错误,网址:“/ wp-admin/admin-ajax.php”丢失了。要解决此问题,请将其更改为url部分,如下所示:

function ajaxSubmit(){
 var newCustomerForm = jQuery(this).serialize();
 jQuery.ajax({
  type:"POST",
  url: "<?php echo home_url('/'); ?>/wp-admin/admin-ajax.php",
  data: newCustomerForm,
  success:function(data){
   jQuery("#feedback").html(data);
  },
  error: function(errorThrown){
   alert(errorThrown);
  }   
 });
 return false;
}

它应该有效

VK

答案 1 :(得分:0)

我也有类似的问题。将Ajax函数放置在function.php中时可以正常工作,而不是在插件内部时可以正常工作。

原来是由于W3 Total Cache,清除了所有缓存后才解决了该问题。