不知道为什么在尝试使用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);
});
}
});
};