2016-04-28 7 views
1

Ich versuche, 2 Such Ajax Ergebnisse mit Gruppen anzuzeigen. Aber es zeigt keine Ergebnisse an. Ich benutze WordPress Ajax dafür.Wählen Sie 2 AJAX-Ergebnis mit Gruppe

Hier ist meine JS-Code,

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, 

     }); 

Daten, die ich von PHP bin wieder wie

$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(); 

Dies wird nicht wie erwartet ausgeführt wird. Es gibt null Ergebnisse zurück. Bitte hilf mir dabei.

+0

try print_r (json_encode ($ data)); statt echo –

+0

Versuchte das auch. aber nicht funktioniert. Mein JSON-Ergebnis lautet: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}} {{"id": "post-39"}, {"id"} {n} : "post-2", "text": "Beispielseite"}, {"id": "post-99", "text": "Rerum quasi odio sed"}, {"id": "post-15" , "Text": "Nesciunt iste doloribus exercitationem eligendi"}, {"id": "post-104", "Text": "Praesentium et dolorem excertzi voluptatibus reiciendis"}, {"id": "post-81", "Text": "Fehler corporis aut commodi"}, {"id": "post-63", "text": "Und sequi enim delectus"}]} ' – patilvikasj

+0

haben Sie versucht, console.log die empfangenen Daten zu erhalten? Gibt es 0 auf der Konsole oder gar nichts? –

Antwort

0

Wenn Sie die Daten vom Back-End erhalten, liegt das Problem in der select2-Konfiguration. Versuchen Sie zunächst, einen Ajax-Anruf zu tätigen und dann select2 mit Daten zu füllen. Somethong wie folgt (nicht sicher, dass für Sie arbeiten, kann ich es hier nicht testen):

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; 
        }, 
       } 
      }); 
Verwandte Themen