jQuery自动完成ajax TypeError

时间:2014-03-29 15:47:44

标签: jquery json autocomplete

在尝试使用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"
}]

我错过了什么或做错了什么?

enter image description here

1 个答案:

答案 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);
            });
        }
    });
};