【发布时间】:2014-11-19 13:24:14
【问题描述】:
好的,我有一个看起来像这样的 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);
如果它可能有用,$temp 数组是从以下 Wordpress 函数生成的:
$wpdb->get_results($query, ARRAY_A);
彼得 2 的更新
脚本:
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%">
【问题讨论】:
-
这不是
json_encode输出。有:字符而不是=并且没有“对象”。 proof。json_encode也非常适合 jquery 自动完成。=也不是正确的 JSON。请向我们展示您的代码。 -
@Peter 我已经为你更新了问题。
-
看起来不错。你能告诉我“json_encode”的实际结果吗?我猜你从浏览器控制台复制粘贴的数据不是你发送到浏览器的原始文本。我认为您的 PHP 代码很好,javascript 方面存在一些问题
-
是的,我已经从控制台复制粘贴了代码。从浏览器输出中获取的实际结果似乎是 jQuery Autocomplete 需要的正确格式。那为什么自动完成功能不起作用?
[{"label":"1","value":"Value example"},{"label":"10","value":"Value example 2"},...] -
确保您的选择器
$('#whatever')正确。这个微不足道的错误通常很难找到。你也能展示一下如何在 js 中启动自动完成功能吗?
标签: arrays json multidimensional-array jquery-ui-autocomplete