我正在尝试使用jquerys autocomplete和我的数据库,但我无法弄清楚如何从我的php脚本返回数据作为自动完成的选项。
以下是基于另一篇论坛帖子的内容:
$('input#transferto').autocomplete({
source: function(request, response)
{
alert('{"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}');
$.ajax({
url: SYSTEM_ROOT+'/assets/controllers/global.php',
data: 'dataString={"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}',
success: function(data)
{
//alert(data);
//data = $.parseJSON(data) ;
response($.map(data, function(item) {
return{
label: item.user_login_name,
value: item.user_id
}
}))
}
})
},
minLength: 3,
datatype: 'json',
cache: false,
delay: 500,
在我的php文件中:
if($mode == 'ENTITY_AUTOCOMPLETE')
{
$query = trim(strip_tags($JSON->term));
$q = $query.'%' ;
$result = $dbh->prepare("SELECT id, name FROM entity_details WHERE name LIKE ?") ;
$result->execute(array($q)) ;
//$data = '{' ;
//while($row = $result->fetch(PDO::FETCH_ASSOC)) {
//foreach($row as $key => $val)
//$data .= '"'.$key.'": "'.rawurldecode($val).'", ' ;
//}
//$data = substr($data, 0, strlen($data)-2).'}' ;
$data = $result->fetchAll(PDO::FETCH_ASSOC) ;
echo print_r($data) ;
}
正如您所看到的,我已经尝试仅返回一个数组并尝试使用JSON但无济于事。
如何让它发挥作用?
答案 0 :(得分:0)
您是否阅读过文档? http://api.jquery.com/jQuery.ajax/
url: SYSTEM_ROOT+'/assets/controllers/global.php',
1)什么是SYSTEM_ROOT root?你没有在任何地方定义这个。
data: 'dataString={"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}',
2)传递数据字符串的方式是不必要的。正如jquery文档所指定的那样,如果不是已经是字符串并将其附加到GET请求的url,则将其转换为查询字符串。如果使用对象,则必须是键/值对。与此同时,您正在尝试将查询字符串中的对象填充为字符串。
if($mode == 'ENTITY_AUTOCOMPLETE')
3)在此行中,您访问未定义/声明的$mode
。通常使用GET请求,您可以使用$_GET['mode']
进行检查,但在您的情况下,它不会在那里,因为您已经搞砸了传递的数据(在2中提到)
打开NET面板并检查控制台是否有错误需要调试。