如何将多个值作为对象添加到jQuery ajax请求中的单个参数?

时间:2016-09-19 20:41:34

标签: javascript php jquery ajax wordpress

当我选中复选框时,我正在尝试将多个值添加到特定数据参数'category_values'

category = []
                jQuery('#rpd_filter_categ:checked').map(function() {
                    category.push(jQuery(this).attr('data-value'));
                }); 

category = jQuery('#rpd_filter_categ:checked').attr('data-value');

jQuery.ajax({
        type: 'POST',
        url: ajaxurl,
        // dataType: 'json',
        traditional: true,
        data: {
            'action'            :   'ajax_filter_listings',
            'action_values'     :   action,
            'category_values'   :   category,
            ...
        },
        success: ...

function ajax_filter_listings(){
$categ_array              =   '';

     $allowed_html   =   array();
        if (isset($_POST['category_values']) && trim($_POST['category_values']) != 'All Types' && $_POST['category_values']!=''&& $_POST['category_values']!='all' && $_POST['category_values']!='all-types'){
            $taxcateg_include   =   sanitize_title ( wp_kses(  $_POST['category_values'],$allowed_html  ) );
            $categ_array=array(
                'taxonomy' => 'property_category',
                'field' => 'slug',
                'terms' => $taxcateg_include
            );
        }

它适用于单个选中的选项,但检查了2个以上的选项:

  • 没有结果
  • 按字母顺序排列第一个选项
  • 选择了最后一个选项

当我检查console -> request -> postData时:

  • 在值%2C
  • 之间添加字符
  • 为第二个值创建一个新对象

我对自己越来越困惑,我越是看到这个......有人能指出我正确的方向吗?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您的字段似乎都具有相同的ID(rpd_filter_categ),但ID应该是唯一的,因此最好将其用作类名。

使用该课程,您可以获得如下类别:

var categories = [];
jQuery('.rpd_filter_categ:checked').each(function() {
  categories.push(jQuery(this).attr('data-value'));
});

jQuery.ajax({
etc...