Javascript 给我一个错误

Javascript 给我一个错误,javascript,php,twitter-bootstrap,bootstrap-typeahead,Javascript,Php,Twitter Bootstrap,Bootstrap Typeahead,正如我的标题所说,在使用bootstrap中的typeahead插件时,我需要一些帮助。我是新手。 让我给你看看我到现在为止都做了些什么 我的HTML <input type="text" class="form-control" data-provide="typeahead" name="pname" id="pname" autocomplete="off"> 我的Json是 [{"pname":"Chettinad","id":"1"},{"pname":"mobile",

正如我的标题所说,在使用bootstrap中的typeahead插件时,我需要一些帮助。我是新手。 让我给你看看我到现在为止都做了些什么

我的HTML

<input type="text" class="form-control" data-provide="typeahead" name="pname" id="pname" autocomplete="off">
我的Json是

[{"pname":"Chettinad","id":"1"},{"pname":"mobile","id":"4"},{"pname":"iPhone","id":"14"},{"pname":"jalli","id":"15"},{"pname":"iphone5s","id":"16"},{"pname":"no image","id":"19"}]
我的PHP代码是

$req = "SELECT pname, id "
    ."FROM product "
    ."WHERE pname LIKE '%".$_REQUEST['query']."%' ";

$query = mysql_query($req);

while($row = mysql_fetch_array($query))
{
    $results[] = array('pname' => $row['pname'], 'id' => $row['id'] );
}

echo json_encode($results); 
每当我试图在文本框中键入一些时。我在控制台中得到了错误

Uncaught TypeError: Cannot read property 'length' of undefined 

请帮助我。

尝试使用jQuery为您的typeahead创建一个json对象的
names
数组,如下所示:

JS:
以下是在我的JS之后的

,我已经给出了我的json数据。请看一看@再见。我不能投票。上面说upvote需要15名代表@Adityathank you。在fiddle中运行良好,但在我的浏览器中,它给了我错误“UncaughtTypeError:无法使用'in'运算符在[{“pname”:“Chettinad”,“id”:“1”}]中搜索'31'”@Aditya@Eric:您必须使用
$.parseJSON(数据)
将响应解析为
JSON
:)这很酷:)工作正常。我有一个疑问。当我输入“Che”3个字母时。chettinad名称在建议列表中显示3次。但实际上它是一个。你能猜出来吗?@Eric:小提琴上没有这样的图案,我猜你正在制作的阵列有重复的,或者可能被多次推入。是吗?:)不,当我输入3个字母时,它正在查询,3个字母3次,我的php文件返回3个json输出。
Uncaught TypeError: Cannot read property 'length' of undefined 
   $('#pname').typeahead({
            source: function (query, process) {
            names = [];
            map = {};
           $.each(data, function (i, obj) {
                map = obj;

                if($.inArray(obj.pname, names)==-1)
                names.push(obj.pname);
            }); 
                 process(names);
            }
        });