不知道为什么在尝试使用ajax源实现自动完成时为什么继续出现此错误。

"Uncaught TypeError: Cannot read property 'length' of undefined"


这是我的快递路线。

exports.findAllIrds = function(req, res) {
    var name = req.query["value"];
    db.collection('employees', function(err, collection) {
        if (name) {
            collection.find({
                "value": new RegExp(name, "i")
            }, {
                value: 1,
                data: 1,
                _id: 0
            }).toArray(function(err, items) {
                res.jsonp(items);
                //console.log(req.query);
                //console.log(items);
            });
        } else {
            collection.find().toArray(function(err, items) {
                res.jsonp(items);
                console.log(req.query);
            });
        }
    });
};


如果我浏览到/ receiversjson,则可以得到所有的json,而当我浏览/ receiversjson?value = 293589324时,我得到

[{"value": "2935893244","data": "D33HL3RH311911"}]符合预期。

但是,当我尝试使用以下代码进行jQuery自动完成时,出现错误。

$('.item-name textarea').autocomplete({
    serviceUrl: '/receiversjson',
    paramName: 'value',
    autoSelectFirst: true,
    onSelect: function(suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});



Uncaught TypeError: Cannot read property 'length' of undefined


在chrome开发人员工具的“网络”标签中,我看到“ receiversjson?value = 293589324”,当我单击它时,它会打开一个包含我的json的页面。

[{
    "value": "2935893244",
    "data": "D33HL3RH311911"
}]


我想念什么或做错什么?

最佳答案

我的问题是json响应中不包含“建议”:我的输出是这样的

[
  {
    "value": "1999458647",
    "data": "A10GA8CW330293"
  }
]


jQuery Autocomplete正在寻找这个。

{
  "suggestions": [
    {
      "value": "1999458647",
      "data": "A10GA8CW330293"
    }
  ]
}


我目前正在使用它。

exports.findAllIrds = function(req, res) {
    var name = req.query["value"];
    db.collection('employees', function(err, collection) {
        if (name) {
            collection.find({"value": new RegExp(name, "i")},{value:1,data:1,_id:0}).toArray(function(err, items) {
                var myobj = {};
                var suggestions = 'suggestions';
                myobj[suggestions] = items;
                res.jsonp(myobj);
            });
        } else {
            collection.find().toArray(function(err, items) {
                res.jsonp(items);
                console.log(req.query);
            });
        }
    });
};

09-12 03:04