onkeyup函数中的jquery自动完成

时间:2013-03-25 14:23:07

标签: php jquery jquery-autocomplete

我需要附加jquery函数的结果。 当用户键入搜索字段时,将调用一个函数并从我的数据库返回数据。 我可以使用警报功能

查看返回的数据
<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);

    });     
}

我需要将返回的数据作为auto comlete附加,我尝试在函数中使用以下内容,我不明白为什么它不起作用

$( "#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;
    }
}

}

3 个答案:

答案 0 :(得分:0)

您需要格式化db调用的输出:

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

答案 1 :(得分:0)

试试这个

$( "#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);
}

答案 2 :(得分:0)

感谢您的回复,这似乎有效。数组需要从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'])){

$ 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 json_encode($symbol);


}

}