2012-02-09 73 views
1

我有一个简单的AJAX函数,放在我的主题的functions.php中。它的工作原理,“工作”正确返回到jQuery ajax请求,所以事情的一面是好的。将AJAX函数放置在插件中时不起作用

BUT,当相同的功能被置于一个插件代替,它不再起作用,只是返回0

function addCustomer(){ 

    echo "working"; 
    die(); 

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

我还试图将所述动作钩的 内如果(is_admin()) 正如this tutorial中所建议的那样,但没有运气。

我想我可能忽略了一些令人难以置信的明显的东西,但我无法弄清楚。任何帮助表示赞赏,因为我现在一直在Google上搜索几个小时。

编辑:这里是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的,只是没有当放置在一个单独的插件中。

+0

你应该阅读你太链接的文章,并做他们正在做的方式。这是正确的方法。 – thenetimp 2012-02-09 12:41:28

+0

好吧,我发布的简单代码和链接文章的完成方式之间有很大区别。具体而言,我想知道他们究竟做了些什么才能使其发挥作用 - 我相当肯定地说,整个课程都是很好的编程,但不是必需的。事实是,我没有nonce检查阻止它?如果是这样,为什么它会在函数中工作,但不在插件中? – 2012-02-09 12:44:45

+0

你确定你没有收到数据吗?您是否尝试过使用休息客户端调用ajax调用,以便看到返回的内容?数据类型可能期望json返回并且您正在使用print语句,因此这可能是一个因素。向我们展示您的AJAX调用代码的样子,以便我们可以看到这两个问题。 – thenetimp 2012-02-09 12:49:26

回答

1

我也有同样的问题,但在调试(萤火虫)运行时,我得到一个404错误,URL:“/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

相关问题