首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为jQuery自动完成做好准备

为jQuery自动完成做好准备
EN

Stack Overflow用户
提问于 2013-10-02 10:24:55
回答 2查看 1.9K关注 0票数 0

我试图将一个PHP数组传递给我的视图,然后使用该数组填充jQuery自动完成。

代码语言:javascript
复制
foreach ($products as $product)
{               
    $productsArray[] = array('label' => $product->getName()  ,'id' => $product->getId() , 'value' => $product->getUrlSafeName());                           
}

$productsJson = json_encode($productsArray);

然后将$productsJson传递给视图,在视图中将其插入DOM。我用Twig做模板引擎:

代码语言:javascript
复制
<div id="autocompleteData">{{ productsJson }}</div>

然后我的jQuery:

代码语言:javascript
复制
$( document ).ready(function() {

    var autocompleteData = $('#autocompleteData').text();       

    $('#findoffice_location').autocomplete({ 
         source: autocompleteData,
         change: function (event, ui) {  } });

});

如果我使用console.log autocompleteData,它在结构上看起来像一个JSON对象,但不是。

如果我这样做了:

代码语言:javascript
复制
var autocompleteData = [{"label":"Toybox","id":1,"value":"toybox"},{"label":"Shoe","id":2,"value":"shoe"},{"label":"Eggs","id":3,"value":"eggs"}];

然后,每一个autocompleteData产品都是一个合适的JSON对象,并且自动完成工作就像预期的那样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 10:33:03

您需要将.text()的字符串输出转换为JSON:

代码语言:javascript
复制
source: jQuery.parseJSON(autocompleteData)

当您手动输入它时,您将输入实际的JSON,这就是它工作的原因。

票数 1
EN

Stack Overflow用户

发布于 2013-10-02 10:37:50

尝试将autocompleteData封装在调用$.parseJON中,如下所示:

代码语言:javascript
复制
$( document ).ready(function() {

    var autocompleteData = $('#autocompleteData').text();       

    $('#findoffice_location').autocomplete({ 
        source: $.parseJON(autocompleteData),
        change: function (event, ui) {  } });

});

编辑@乔治击败了我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19134810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档