2016-04-28 86 views
1

我想显示选择2搜索ajax结果与组。但它不显示任何结果。我为此使用WordPress Ajax。选择2组ajax结果

这里是我的JS代码,

jQuery('select.select2-group_filters-dropdown').select2({ 
      //placeholder: "Select pages/post/categories", 

      ajax: { 
       url: ajaxurl, 
       dataType: 'json', 
       method: 'post', 
       delay: 250, 
       data: function (params) { 
        return { 
         q: params.term, // search term 
         page: params.page, 
         action: 'cp_get_posts_by_query' 
        }; 
       }, 
       results: function (data, page) { 
         return {results: data}; 
       }, 
       processResults: function (data) { 

        return { 
         results: data 
        }; 
       }, 
       cache: true 
      }, 
      minimumInputLength: 0, 

     }); 

数据我从PHP返回的,

$searchString = $_POST['q']; 
$childdata = array(); 

$query = new WP_Query(array('s' => $searchString)); 

if ($query->have_posts()) { 
    while ($query->have_posts()) { 
     $query->the_post(); 
     $title = get_the_title(); 
     $ID = get_the_id(); 
     $childdata[] = array('id' => "post-".$ID, 'text' => $title); 
    } 
} else { 
    $data[] = array('id' => '0', 'text' => 'No results Found'); 
} 

$data = array(
    "text" => "posts", 
    "children" => $childdata 
); 

wp_reset_postdata(); 

// return the result in json 
echo json_encode($data); 
die(); 

这无法按预期运行。它返回零结果。请帮我解决一下这个。

+0

尝试的print_r(json_encode($数据));而不是回声 –

+0

也试过了。但不工作。我的JSON结果是'{“text”:“posts”,“children”:{“id”:“post-39”,“text”:“Nihil voluptatem provident reprehenderit et voluptatem rerum” :“post-2”,“text”:“Sample Page”},{“id”:“post-99”,“text”:“Rerum quasi odio sed”},{“id” ,“text”:“Nesciunt iste doloribus exercitationem eligendi”},{“id”:“post-104”,“text”:“Praesentium et dolorem excepturi voluptatibus reiciendis”},{“id”:“post-81”, “text”:“Error corporis aut commodi”},{“id”:“post-63”,“text”:“et sequi enim delectus”}]}' – patilvikasj

+0

您是否尝试过console.log收到的数据?它在控制台上给你0还是什么都没有? –

回答

0

如果您从后端获取数据,则问题出在select2配置中。 尝试先调用ajax调用,然后用数据填充select2。 Somethong这样的(不知道这会为你工作,我不能在这里进行测试):

jQuery.ajax({ 
url: ajaxurl, 
dataType: 'json', 
method: 'post', 
delay: 250, 
data: function (params) { 
    return { 
     q: params.term, // search term 
     page: params.page, 
     action: 'cp_get_posts_by_query' 
    } 
    } 
    }).done(function(data) { 

jQuery('select.select2-group_filters-dropdown').select2({ data:data, minimumInputLength: 0}); 


    }); 
-1
$('.select2').select2({ 
       allowClear: true, 
       ajax: { 
        url: function (params) { 
         return "api/endpoint/?user=" + params.term; 
        }, 
        dataType: 'json', 
        delay: 500, 
        processResults: function (data) { 
         return { 
          results: $.map(data, function (item) { 
           return { 
    /* NOTE: return in this format i.e. 
    * key = **text** : value = username 
    * key = **id** : value = id 
    */ 
            text: item.username, 
            id: item.id 
           } 
          }) 
         }; 
        }, 
        minimumInputLength: 1, 
        minimumInputLength: 3, 
        cache: true, 
        escapeMarkup: function (markup) { 
         return markup; 
        }, 
        templateResult: function (item) { 
         return item.username; 
        }, 
        templateSelection: function (item) { 
         return item.username; 
        }, 
       } 
      });