jquery自动完成onkey功能

问题描述:

我需要附加jquery函数的结果。 当用户键入搜索字段时,会调用一个函数,并从我的数据库返回数据。 我可以使用提醒功能看到返回的数据jquery自动完成onkey功能

<input type="text" name="symbol" id="symbol" required="required" onkeyup="findmatch();"> 

称为jQuery函数低于

function findmatch(){ 
    var symbol= document.getElementById("symbol").value; 

    $.post("portfolio/searchStock.php", 
    { 
     search:symbol 
    }, 
    function(data,status){ 
    alert(data); 

    });  
} 

我需要把数据返回给被像自动完整而我一直在使用中的以下尝试的功能,我不明白为什么它不工作

$("#symbol").autocomplete({ 
       source: data 
     }); 

PHP文件的回声数据如下

if (isset ($_POST['search'])){ 

$ search = $ _POST ['search']; if(!empty($ search)){ $ query =“select * from companylist where symbol like'”.mysql_real_escape_string($ search)。“%'”; $ query_run = mysql_query($ query);

while ($query_row = mysql_fetch_assoc($query_run)){ 
     $symbol = $query_row['symbol']; 
     echo $symbol; 
    } 
} 

}

+0

你能也粘贴在返回数据的格式? – 2013-03-25 14:34:10

您需要格式化数据库调用的输出:

while ($query_row = mysql_fetch_assoc($query_run)){ 
    $symbol[] = $query_row['symbol']; 
} 
echo json_encode($symbol); 

然后,你需要分析返回的数据。

var sourceData = []; 
var arrData = $.parseJSON(data); 
foreach(x in arrData) 
{ 
    sourceData.push(arrData[x]); 
} 
$("#symbol").autocomplete({ 
      source: sourceData 
}); 
+0

他还需要记住他的数据需要格式化为:[{label:“Choice1”,value:“value1”},...]或[“Choice1”,“Choice2”] – 2013-03-25 14:31:50

+0

感谢提醒,编辑答案。 – 2013-03-25 15:47:23

+0

谢谢你,需要等3个小时才能发布我的答案,因为我是新来的。 – user2202098 2013-03-25 19:04:14

试试这个

$("#symbol").autocomplete({ 
       'search':function(event,ui){ 
       var newUrl="portfolio/searchStock.php/abc/"+$("#symbol").val(); 
       $(this).autocomplete("option","source",newUrl) 
       }, 
       'source':[] 
    }); 

,并在PHP

function abc($search){ 


if(!empty ($search)){ $query="select * from companylist where symbol like '".mysql_real_escape_string($search)."%'"; $query_run = mysql_query($query); 

    while ($query_row = mysql_fetch_assoc($query_run)){ 

     $new_row['label']=htmlentities(stripslashes($query_row['symbol'])); 
    $new_row['value']=htmlentities(stripslashes($query_row['symbol_id'])); 
    $row_set[] = $new_row; //build an array 
    } 

}echo json_encode($row_set); 
} 

谢谢你的回信,这似乎工作。阵列所需编码并从PHP侧 解析JavaScript文件

function findmatch(){ 
    var symbol= document.getElementById("tSymbol").value; 
    $.post("portfolio/searchStock.php", 
    { 
     search:symbol 
    }, 
    function(data,status){ 
    var arrData = $.parseJSON(data); 
    $("#tSymbol").autocomplete({ 
     source: arrData 
    }); 
    });  
} 

searchStock.php

if (isset ($_POST['search'])){ 

$查询= $ _POST [ '搜索']; if(!empty($ search)){ $ query =“select * from companylist where symbol like'”.mysql_real_escape_string($ search)。“%'”; $ query_run = mysql_query($ query);

while ($query_row = mysql_fetch_assoc($query_run)){ 
     $symbol [] = $query_row['symbol']; 

    } 
    echo json_encode($symbol); 


} 

}