第一次用WP做AJAX,怎么做?

时间:2015-08-19 作者:Gareth Gillman

多年来,我一直在不同的帖子中尝试解决这个问题,但似乎无法实现,因为我不是Jquery大师,我正在努力解决这个问题。

我的html:

<select id="shoe-kids" class="form-control hide-select">
 <option value="" selected>Select Sub-category</option>
 <option value="trainers-kids-shoes">Trainers</option>
</select>
我的ajax(在我的js文件中)

$(\'#shoes-kids\').on(\'change\', function(){
  $.ajax({
   url:"/wp-admin/admin-ajax.php",
   type:\'POST\',
   data:\'action=\',
   success:function(results) {
    $("#product-results").append(results);
   }
  });
 });
功能。php

add_action( \'wp_ajax_nopriv_load-filter2\', \'tsf_load_products\' );
 add_action( \'wp_ajax_load-filter2\', \'tsf_load_products\' );
 function tsf_load_products () {

  $product_args = array (
   \'post_type\' => \'shoes\',
   \'posts_per_page\' => -1,
   \'order\' => \'DESC\',
   \'tax_query\' => array(
    array(
     \'taxonomy\' => \'tsf_category\',
     \'field\'    => \'slug\',
     \'terms\'    => \'trainers-kids-shoes\',
     \'operator\' => \'IN\'
    )
   ),
  );
  $product_query = new WP_Query( $product_args );
  while ( $product_query->have_posts() ) {
     $product_query->the_post();
   echo \'<li>\' . get_the_title() . \'</li>\';
  }
  wp_reset_postdata();

 }
我知道这在我的脑海中是如何运作的,但我正在努力让这一切在实践中发挥作用,我正在努力解决的问题有:

1) 向ajax调用添加数据(我需要在其中添加什么)

2) 如何将信息添加到本地化脚本函数(对于我的js文件)

3) 将结果发布到网站

提前感谢

1 个回复
SO网友:Domain

$(\'#shoes-kids\').on(\'change\', function(){
$.post(\'<?php echo admin_url( "admin-ajax.php" ); ?>\',  {
          first_name: ""+ $("#first_name").val(), //sending first name
          last_name: ""+ $("#last_name").val(), //sending last name
      action : \'your_ajax_hook\'
        },  function(data,status){
            if(status=="success")
        {
         $("#product-results").append(data);
        }
        else
        {
        alert(\'Failed\');
        }
    });
 });
即:-

add_action( \'wp_ajax_your_ajax_hook\', \'your_function_name\' );
add_action( \'wp_ajax_nopriv_your_ajax_hook\', \'your_function_name\'  );
在上面,我将first\\u name和last\\u name作为帖子数据发送,您只需将“,”作为分隔符即可发送更多内容

结束