0

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

    });     
}

返されたデータを自動完了として添付する必要があります。関数内で次を使用してみましたが、なぜ機能しないのかわかりません。

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

}

4

3 に答える 3

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
});
于 2013-03-25T14:29:09.990 に答える
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);
}
于 2013-03-25T17:49:40.337 に答える
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);


}

}

于 2013-03-26T12:11:24.953 に答える