Jquery JSON解析结果错误

Jquery JSON解析结果错误,jquery,json,Jquery,Json,我正在分析从Cakephp 2.0控制器返回的字符串 我的自动完成代码是 jQuery("#name").autocomplete( '<?php echo HTTP_PATH.'/lensmaterials/getBrands'; ?>', { multiple: true, mustMatch: true, matchContains: true, autoFill: false, dataType: "json", parse:

我正在分析从Cakephp 2.0控制器返回的字符串

我的自动完成代码是

jQuery("#name").autocomplete( '<?php echo HTTP_PATH.'/lensmaterials/getBrands'; ?>', {
    multiple: true,
    mustMatch: true,
    matchContains: true,
    autoFill: false,
    dataType: "json",
    parse: function(data) {
        return $.map(data, function(item) {
            return { data: item, value: item.label, result: item.label};
        });
    },
    formatItem: function(item) {
        return '<li>' + item.label + '</li>';
    }
});
public function getBrands(){
    $brandList = $this->Brand->find('list',array('fields'=>array('id','brand_name'),'order' => array('Brand.brand_name')));
    //pr($brandList); exit;
    foreach ($brandList as $key => $name) {
        $json_output[]['id'] = $key;
        $json_output[]['label'] = $name;
    }
    echo json_encode($json_output);
    $this->autoRender = false;
}
返回的JSON字符串是

 [{"id":1},{"label":"Bvlgari"},{"id":2},{"label":"Chanel"},{"id":7},{"label":"D & G"},{"id":8},{"label":"Dior"},{"id":10},{"label":"Emporio Armani"},{"id":11},{"label":"Fendi"},{"id":12},{"label":"Giorgio Armani"},{"id":13},{"label":"Gucci"},{"id":14},{"label":"Oakley"},{"id":15},{"label":"Oliver Peoples"},{"id":16},{"label":"Paul Smith"},{"id":4},{"label":"Polo Ralph Lauren"},{"id":18},{"label":"Prada"},{"id":19},{"label":"Prada Linea Rossa"},{"id":20},{"label":"Ray Ban"},{"id":21},{"label":"Tiffany"},{"id":3},{"label":"Tom Ford"}]

最后,它不会在我键入时返回。那就是我有香奈儿,如果我打字比未格式化和未定义的永远不会继续我的钥匙。它保持不变。

我认为您的数据格式是错误的。
id
label
属性应该在同一个对象中。一半的对象没有
标签
属性,因此尝试访问它将导致
未定义
(即,您得到
{data:{…},value:undefined,result:undefined}

将生成过程更改为:

foreach ($brandList as $key => $name) {
    $json_output[] = array('id' => $key, 'label' => $name);
}
那么输出将是:

[{"id":1,"label":"Bvlgari"},{"id":2,"label":"Chanel"},...]

错误是什么?你能创建一个演示吗?
s未定义[Break On This Error]s=s.toLowerCase()
这是在jsonlint.com中检查到的错误,它的验证正确
json\u encode
将始终创建有效的json,但这并不意味着应用程序理解您传递给它的数据。数据也必须是结构化的,以便理解。现在生成正确的列表。但仍然有两个问题。首先,它的上市相当缓慢。第二,如果我选择任何值,而不是它在我的文本框中填充。。第三是设计部门。。。i、 你每个问题只能问一个问题。关于设置文本框的值,可能与
autoFill
有关?您似乎没有使用jqueryui中的autocomplete插件,因此如果没有更多信息,我们将无法帮助您。至于设计,如果你把它表述成一个恰当的问题并举例说明,你可能会得到一些帮助。否则,你似乎只是想找个人来做你的工作。你能帮我解决其他三个问题吗。我已经提到……我不能投票支持你,因为你的声望低于15,否则我会……对不起,今天不是这样的,只是我遇到了JSON。我在谷歌上搜索了很久,还没有找到任何解决办法。你解决了我的问题,谢谢你。如果能得到你的帮助,我会更高兴。即使是我也有错…只有你明白问题所在,我们才能帮助你。正如我所说,我们不知道你使用哪个插件,因此我们无法帮助你使用该插件。第二,我想要以美丽的方式体现价值。这是ul的Div显示列表,李。。。这个应该是什么样子?现在看起来怎么样?同样,这可能取决于您使用的插件。你提供的信息越多,你解释问题的能力就越强,你得到的答案也就越好。