我有一个简单的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中时,它工作得很好,而不是放在一个单独的插件中。
答案 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,清除了所有缓存后才解决了该问题。