【发布时间】:2013-10-02 10:24:55
【问题描述】:
我正在尝试将一个 PHP 数组传递给我的视图,然后使用该数组来填充 jQuery 自动完成功能。
foreach ($products as $product)
{
$productsArray[] = array('label' => $product->getName() ,'id' => $product->getId() , 'value' => $product->getUrlSafeName());
}
$productsJson = json_encode($productsArray);
$productsJson 然后被传递给视图,我将它插入到 DOM 中。我使用 Twig 作为我的模板引擎:
<div id="autocompleteData">{{ productsJson }}</div>
然后是我的 jQuery:
$( document ).ready(function() {
var autocompleteData = $('#autocompleteData').text();
$('#findoffice_location').autocomplete({
source: autocompleteData,
change: function (event, ui) { } });
});
如果我使用 console.log autocompleteData,它在结构上“看起来”像一个 JSON 对象,但不是。
如果我这样做:
var autocompleteData = [{"label":"Toybox","id":1,"value":"toybox"},{"label":"Shoe","id":2,"value":"shoe"},{"label":"Eggs","id":3,"value":"eggs"}];
然后是 consolelog ,每个 autocompleteData 产品都是一个正确的 JSON 对象,并且自动完成按预期工作。
【问题讨论】:
-
JS中
console.log(autocompleteData)的输出是什么? -
[{"label":"Toybox","id":1,"value":"toybox"},{"label":"Shoe","id":2,"value ":"shoe"},{"label":"Eggs","id":3,"value":"eggs"}]
-
如果我按照问题中的最后一个代码块在 js 中手动输入,console.logging 会为我提供 [Object,Object,Object] 和自动完成功能。