2009-10-16 62 views
0

我目前正在使用jQuery Autocomplete Plugin将数组修改为使用PHP和jQuery在JSON中输出

他们在演示中提供的代码是:

<?php 
$q = strtolower($_GET["q"]); 
$items = array(
"Peter Pan"=>"[email protected]", 
"Molly"=>"[email protected]", 
); 

    $result = array(); 
    foreach ($items as $key) { 
    if (strpos(strtolower($key), $q) !== false) { 
    array_push($result, array(
     "name" => $key 
    )); 
    } 
    } 
echo json_encode($result); 
?> 

我想知道我可以从我的MySQL数据库修改这个代码,以输出自己的阵列。

我试过对自己的修改,但我没有正确地做。这就是我想:

$q = strtolower($_GET["q"]); 
$sql = "SELECT name from user_info"; 
require("connection.php"); 
$result = mysql_db_query($DBname,$sql,$link) or die(mysql_error()); 

$rows = array(); 
while($r = mysql_fetch_assoc($result)) { 
    $rows[] = $r; 
foreach ($rows as $key) { 
if (strpos(strtolower($key), $q) !== false) { 
    array_push($result, array(
     $key 
    )); 
} 
} 
} 
print json_encode($rows); 

,这是我的jQuery/JavaScript的:

$("#email").autocomplete('emails.php', { 
    multiple: false, 
    dataType: "json", 
    parse: function(data) { 
     return $.map(data, function(row) { 
      return { 
       data: row, 
       value: row.name, 
       result: row.name 
      } 
     }); 
    }, 
    formatItem: function(item) { 
     return format(item); 
    } 
}).result(function(e, item) { 
    $("#content").append("<p>selected " + format(item) + "</p>"); 
}); 
}); 

结果,萤火虫表明,它引发以下错误:

value is undefined 

任何帮助正确地获取我的查询设置将得到很大的帮助。谢谢!

回答

0

我认为,这是因为你使用在json中转换的数组,那么你需要在jquery结果中使用怎样的数组。或者你可以在不使用json的情况下做一个json字符串,格式为:'[{“name”:“john”,“year”:2009},{“name”:“tom”,“year”:2000}。 ..]”。

0

你的jquery很好。几个小时后,我发现它是'格式'函数中引发错误的格式。

如果你看一下源代码在

http://jquery.bassistance.de/autocomplete/demo/json.html

你会看到下面,看似无关紧要的功能

function format(mail) { 
    return mail.name + " &lt;" + mail.to + "&gt"; 
} 

如果你离开了“小于”和'大于'表示,那么你很可能得到了

value is undefinded 

第一条记录在控制台中循环播放后出现错误。出于某种奇怪的原因,小于和大于符号是重要的。确保你保持你的格式功能。