0

Хорошо, что у меня есть это PHP массив, который выглядит следующим образом:нужно json_encode РНР массив определенным образом

Array 
(
    [0] => Array 
     (
      [label] => 1 
      [value] => Value example 
     ) 
    [1] => Array 
     (
      [label] => 10 
      [value] => Value example 2 
     ) 
    [...] 
) 

Теперь, если я json_encode() этот массив, то, что я получаю:

[ 
    Object { label="1", value="Value example" }, 
    Object { label="10", value="Value example 2" }, 
    ... 
] 

Но использовать его в jQuery Autocomplete я нужен массив, чтобы быть как это:

[ 
    { label="1", value="Value example" }, 
    { label="10", value="Value example 2" }, 
    ... 
] 

Я г ead тонн страниц, не найдя решения ... может кто-то помочь?

ОБНОВЛЕНИЕ ДЛЯ ПЕТРА:

Вот мой код:

$results = array(); 
foreach ($temp as $tmp) { 
    $results[] = array(
     'label' => $tmp['id'], 
     'value' => $tmp['it'] 
    ); 
}; 
echo json_encode($results); 

Если это может быть полезно, $temp массив формируется из следующих функций Wordpress:

$wpdb->get_results($query, ARRAY_A); 

UPDATE ДЛЯ ПЕТРА 2

SCRIPT:

jQuery(document).ready(function($){ 
    var temp_array = function(request, response) { 
     $.ajax({ 
      url: '<?php echo admin_url('admin-ajax.php'); ?>', 
      type: 'POST', 
      dataType: 'json', 
      data: { 
       'action': 'autocomplete_finder', 
       'data' : request.term, 
      }, 
      success: function(data) { 
       //response(data); 
       console.log(data); 
      } 
     }); 
    }; 
    $('#containing').autocomplete({ 
     source: temp_array, 
     minLength: 3, 
     select: function(event, ui) { 
      console.log('test') 
     } 
    }); 
}); 

HTML:

<input id="containing" style="width: 98%"> 
+1

это не 'json_encode' выход. есть ':' символы вместо '=' и нет «Объекта». [Доказательство] (http://codepad.viper-7.com/RCt8Wq). Также 'json_encode' отлично подходит для автозаполнения jquery. Также '=' неверно JSON. Пожалуйста, покажите нам свой код. – Peter

+0

@Peter я обновил вопрос для вас. – Mariano

+0

выглядит нормально. можете ли вы показать мне фактический результат «json_encode»? Я предполагаю, что вы скопировали данные из консоли браузера, которая не является сырым текстом, который вы отправляете в браузер. Я думаю, что ваш PHP-код в порядке, есть некоторая проблема с javascript стороной – Peter

ответ

1

Я просто понял, что простая ошибка, которую вы сделали

Переключатель label с value:

$results = array(); 
foreach ($temp as $tmp) { 
    $results[] = array(
     'label' => $tmp['it'], 
     'value' => $tmp['id'] 
    ); 
}; 
echo json_encode($results); 

и он будет работает

ваш массив должен выглядеть следующим образом:

Array 
(
    [0] => Array 
     (
      [label] => Value example 
      [value] => 1 
     ) 
    [1] => Array 
     (
      [label] => Value example 2 
      [value] => 10 
     ) 
    [...] 
) 
+0

Я пробовал и нет никакой разницы ... зачем переключать их должно иметь значение? – Mariano

+0

@Mariano, потому что он дает вам подсказку для 'label' не для' value' – Peter

+1

OMG ... какая глупая ошибка ... теперь она работает (я почти не обновил браузер с первого комментария) ... спасибо много! – Mariano

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