在尝试使用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": "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 developer tools网络标签中,我看到" receiversjson?value = 293589324"当我点击它时,它用我的json打开一个页面。
[{
"value": "2935893244",
"data": "D33HL3RH311911"
}]
我错过了什么或做错了什么?
答案 0 :(得分:3)
我的问题是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);
});
}
});
};