4

入力した最初の文字が 0 (ゼロ) のときにオートコンプリートが機能しない理由を知っている人はいますか? デバッグの目的で、行が見つかったかどうかだけを通知するように AC をセットアップしました。最初の文字として入力した文字は、0 を除いてそのように通知されているようです。起動して作業を開始します。minLength最初の文字が 0 のときの属性のようです。これに2遭遇したり聞いたりして、修正方法を知っている人はいますか? これが私のコードです:

//AutoComplete code in question
$(function() {
    var itemcode_ac = {
        source: "/webservices/whs_bincodeAC.php",
        select: function(event, ui) {
            $('#txtBin').val(ui.item.value);
            getWhsInfo();
        },
        minLength: 1
    }
    $('#txtBin').autocomplete(itemcode_ac);
});

whs_bincodeAC.php:

<?php
if(isset($_GET["term"]) && !empty($_GET["term"])) {
    include_once $_SERVER['DOCUMENT_ROOT'].'/path/to/dbConnect.php';
    $term = mysql_real_escape_string(trim($_GET["term"]));
    //wildcard appended here for parameterized query (MySqli)
    $term .= "%";

    $query = "SELECT DISTINCT BinCode, ItemCode, ItemName, WhsCode, DataAsOfDate FROM whse_tbl 
        WHERE BinCode LIKE '$term' or ItemCode LIKE '$term' ORDER BY BinCode LIMIT 0, 10";
    $res = mysql_query($query);

    //This is the debug code I described above
    /*if($row = mysql_fetch_assoc($res))
        echo json_encode(array(array('value' => "is row")));
    else
        echo json_encode(array(array('value' => "no row")));
    return;*/

    $matches = array();
    while($row = mysql_fetch_assoc($res))
    {
        $matches[] = array('value' => $row["BinCode"], 'label' => $row["BinCode"].' - '.$row["ItemCode"],
            'name' => $row["ItemName"], 'whscode' => $row["WhsCode"], 'asOfDate' => $row["DataAsOfDate"]);
    }

    echo json_encode($matches);
}
?>

注: 私の上司は、今のところ MySqli 拡張機能ではなく、MySql を使用するように指示しています。

4

1 に答える 1

4

おそらくあなたは次のようなことをしています。

if(empty($_GET["bin"]))またはそのif(!$_GET["bin"])値を確認します。

しかし、この場合、binがである場合0、最初のケースは にtrueなり、2 番目のケースは になりfalseます。

isset($_GET["bin"])代わりに使用してください。

于 2012-10-02T18:50:03.820 に答える