ajax request in wordpress

时间:2020-04-28 作者:Omnia Magd

我在中创建ajax请求functions.php

function my_enqueue() {
    wp_enqueue_script( \'ajax-script\', get_template_directory_uri() . \'/js/script.js\', array(\'jquery\') );
    wp_localize_script( \'ajax-script\', \'cc_ajax_object\', 
        array( \'ajax_url\' => admin_url( \'ajaxrequest.php\' ) ) );
}

add_action( \'wp_enqueue_scripts\', \'my_enqueue\' );

add_action( \'wp_footer\', \'add_js_to_wp_footer\' );
function add_js_to_wp_footer()
{ 
   ?>
   <script type="text/javascript">
   jQuery(\'.all-categories\').click(function($){
     jQuery.ajax({
       type : "post",
       dataType : "json",
       url : cc_ajax_object.ajax_url,
       data: {
        \'action\': \'get_products\',        
      },
      success:function(data) {
        // This outputs the result of the ajax request
        console.log(data);
      },
      error: function(errorThrown){
         console.log(errorThrown);
      }
   });
  });
  </script>
并且在ajaxrequest.php

<?php 
 /* ajaxrequest page */
 function get_products()
 {
    echo "test";
 }
网络中无错误,但控制台中的数据=null

错在哪里????

2 个回复
最合适的回答,由SO网友:Chetan Vaghela 整理而成

您可以从下面的代码中获取参考。删除ajaxrequest。php文件,不需要该文件,因为我添加了ajaxrequest。活动主题函数中的php文件代码。php文件。

我已经更改了ajax url,并在脚本中添加了js脚本代码。js文件。我已经测试过了,它对我有效。如果这对你有用,请告诉我。

functions.php

function my_enqueue() {
    wp_enqueue_script( \'ajax-script\', get_template_directory_uri() . \'/js/script.js\', array(\'jquery\') );
    wp_localize_script( \'ajax-script\', \'cc_ajax_object\', 
        array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
}

add_action( \'wp_enqueue_scripts\', \'my_enqueue\' );


add_action(\'wp_ajax_get_products\', \'get_products\' ); // executed when logged in
add_action(\'wp_ajax_nopriv_get_products\', \'get_products\' ); // executed when logged out
function get_products()
{
  echo "test";
  wp_die();
}

script.js

jQuery(document).ready(function($) {
   jQuery(\'.all-categories\').click(function($){
     jQuery.ajax({
       type : "post",
       dataType : "json",
       url : cc_ajax_object.ajax_url,
       data: {
        \'action\': \'get_products\',        
      },
      success:function(data) {
        // This outputs the result of the ajax request
        console.log(data);
      },
      error: function(errorThrown){
         console.log(errorThrown);
      }
   });
  });
});

SO网友:sialfa

忘了分离吧ajaxrequest.php 文件您的错误在wp_localize_script, 您需要指向admin-ajax.php 本地化脚本时的文件:

function my_enqueue() {
    wp_enqueue_script( \'ajax-script\', get_template_directory_uri() . \'/js/script.js\', array(\'jquery\') );
    wp_localize_script( \'ajax-script\', \'cc_ajax_object\', 
        array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
}

add_action( \'wp_enqueue_scripts\', \'my_enqueue\' );
另一件事是关于管理响应的函数,而不是在主题中要求它function.php 文件,将代码直接放入主题函数文件中。