好的,我所拥有的是一个如下所示的PHP数组:
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" },
...
]
我在没有找到解决方案的情况下阅读了大量的页面......有人可以帮忙吗?
更新彼得:
这是我的代码:
$results = array();
foreach ($temp as $tmp) {
$results[] = array(
'label' => $tmp['id'],
'value' => $tmp['it']
);
};
echo json_encode($results);
如果它有用,则从以下Wordpress函数生成$temp
数组:
$wpdb->get_results($query, ARRAY_A);
更新彼得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%">
答案 0 :(得分: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
)
[...]
)