2014-05-28 4 views
0

У меня уже есть текстовое поле jquery autocomplete, которое правильно отображает данные, но когда я добавляю $ group в запросе MongoDB, чтобы сделать выделение, я получаю требуемый json-массив в качестве ответа, но в текстовом виде автозаполнения ничего не отображается,Как отображать json закодированные данные через jquery?

Ниже мой результат запроса и ответ JSON массив со страницы обработки

моим первым запросом (автоматическое заполнение заполняемой отлично)

$result = $collection->aggregate(array(
array(
'$match' => array(

    'Quote_Details.Quote_Catagory' => new MongoRegex("/^$q/i"), 
    'Name_Status' => "P", 
    'Quote_Details.Quote_Status' => "p" 

) 
), 
array(
'$unwind' => '$Quote_Details' 
), 
     array(
'$match' => array(

    'Quote_Details.Quote_Catagory' => new MongoRegex("/^$q/i"), 
    'Name_Status' => "P", 
    'Quote_Details.Quote_Status' => "p" 


) 
    ), 


     array(
    '$group' => array(
     '_id' => array(
      'value1' =>'$Quote_Details.Quote_Catagory' 

     ) 
     ) 

    ), 





    array(
    '$project' => array(

'value' => '$Quote_Details.Quote_Catagory' 
    )  
    ), 



)); 

результат JSON

[{"_id":{"$id":"538443bf05a7d1226d000000"},"value":"Inspirational"},{"_id":{"$id":"538443bf05a7d1226d000000"},"value":"Inspirational"},{"_id":{"$id":"538443bf05a7d1226d000000"},"value":"Imagination"}] 

Новый запрос (автозаполнение заселение, но ничего не отображает)

$result = $collection->aggregate(array(
array(
'$match' => array(

    'Quote_Details.Quote_Catagory' => new MongoRegex("/^$q/i"), 
    'Name_Status' => "P", 
    'Quote_Details.Quote_Status' => "p" 

) 
), 
array(
'$unwind' => '$Quote_Details' 
), 
     array(
    '$match' => array(

    'Quote_Details.Quote_Catagory' => new MongoRegex("/^$q/i"), 
    'Name_Status' => "P", 
    'Quote_Details.Quote_Status' => "p" 


    ) 
), 




array(
    '$group' => array(
     '_id' => array(
      'value1' =>'$Quote_Details.Quote_Catagory' 

     ) 
     ) 
     ), 

    )); 

результат JSON

[{"_id":{"value1":"Imagination"}},{"_id":{"value1":"Inspirational"}}] 

Мой Jquery

$(document).ready(function(){ 

       $("#catagr_id").autocomplete({ 
        source:'insertionauto.php', 
        minLength:1, 
        select: function (event, ui) 
        { 
         //label = ui.item.label; 
         var value1 = ui.item.value; 
         $("#authnames").val(value); 
         console.log("hi"); 

         //alert(label); 
         //alert(value); 

         $("#quote_id").autocomplete({ 
        source:'autocatagquote.php?postcode='+value1, 
        minLength:1, 
        select: function (event, ui) 
        { 
         var label1 = ui.item.label; 
         var value1= ui.item.value; 

         console.log("hi"); 

         //alert(label); 
         //alert(value); 

        } 


       }); 

        } 


       }); 



       }); 

, если мое предположение верно я получаю несколько массив как второй результат, и результат не отображается в автозаполнении, но почему? Пожалуйста, помогите, должно быть что-то о сгруппировании

+0

Похож на плагин. Что это такое, есть ли у вас ссылка на то, что вы используете? Казалось бы, данные как простой массив не являются ожидаемыми. Вам, вероятно, нужно немного «массажировать» ваш результат перед возвращением. –

+0

Вы также пытаетесь добавить скриншот. Нет скриншотов, пожалуйста, это не поможет ответить на вопрос –

+0

@NeilLunn эй, я спросил об этом, в моем предыдущем вопросе, пожалуйста, проверьте http://stackoverflow.com/questions/23865884/how-to-do-sorting-and -select-distinct-in-mogodb-php-query – Robin

ответ

0

Так что действительно о работе с методом автозаполнения «jqueryui», который ожидает простой массив строк в качестве источника данных. Но давайте очистить ваше агрегирование заявления первого, поскольку есть некоторые не-необходимые вещи там, которые не помогает:

$result = $collection->aggregate(array(
    array(
     '$match' => array(
      'Quote_Details.Quote_Catagory' => new MongoRegex("/^$q/i"), 
      'Name_Status' => "P", 
      'Quote_Details.Quote_Status' => "p" 
     ) 
    ), 
    array(
     '$unwind' => '$Quote_Details' 
    ), 
    array(
     '$match' => array(
      'Quote_Details.Quote_Catagory' => new MongoRegex("/^$q/i"), 
      'Name_Status' => "P", 
      'Quote_Details.Quote_Status' => "p" 
     ) 
    ), 
    array(
     '$group' => array(
      '_id' => '$Quote_Details.Quote_Catagory' 
     ) 
    ), 
)); 

Таким образом, нет никаких причин, чтобы гнездиться значение _id в результате к «группе» конца. И вы действительно хотите разбить объекты как простые строки для возвращаемого результата.

Тогда вы просто перекручивание через массив PHP:

$myresult = array(); 

    for ($i = 0; $i < sizeof($result); $i++) { 
     $myresult[$i] = $result["result"][$i]["_id"]; 
    } 

    json_encode($myresult); 

Итак вы просто массив строк в соответствии с требованиями метода плагина:

["Imagination","Inspirational"] 

Дело в том, что плагин метод, включенный в API jqueryui, ожидает, что результаты будут просто массивом строк. Вы возвращаете объекты с неожиданными ключами, если только вы не манипулируете им.

+0

thankz a TON !!! – Robin

+0

, тогда как мой первый запрос с моим первым массивом json работал? – Robin

Смежные вопросы