Функция AJAX не работает при размещении внутри плагина - PullRequest
1 голос
/ 09 февраля 2012

У меня есть простая функция AJAX, которую я поместил в файл functions.php моей темы.Это работает, и «рабочий» корректно возвращается в ajax-запрос jQuery, так что все в порядке.

НО, когда эта же функция помещается в плагин, она больше не работает, просто возвращает 0.

function addCustomer(){

    echo "working";
    die();

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

Я также пытался поместить хук действия внутри if (is_admin ()) как было предложено в этом уроке , но не повезло.

Я думаю, что, наверное, упускаю из виду нечто невероятно очевидное, но я не могу этого понять.Любая помощь приветствуется, потому что я уже несколько часов гуглю.

РЕДАКТИРОВАТЬ: Вот вызов 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Только не в отдельном плагине.

1 Ответ

1 голос
/ 04 января 2013

У меня тоже была такая же проблема, но при запуске в отладке (firebug) я получил ошибку 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

...