我试图将一个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"}];然后,每一个autocompleteData产品都是一个合适的JSON对象,并且自动完成工作就像预期的那样。
发布于 2013-10-02 10:33:03
您需要将.text()的字符串输出转换为JSON:
source: jQuery.parseJSON(autocompleteData)当您手动输入它时,您将输入实际的JSON,这就是它工作的原因。
发布于 2013-10-02 10:37:50
尝试将autocompleteData封装在调用$.parseJON中,如下所示:
$( document ).ready(function() {
var autocompleteData = $('#autocompleteData').text();
$('#findoffice_location').autocomplete({
source: $.parseJON(autocompleteData),
change: function (event, ui) { } });
});编辑@乔治击败了我。
https://stackoverflow.com/questions/19134810
复制相似问题