0

データベース内の利用可能なエントリからユーザーの場所を設定する簡単な検索ボックスがあります。jQuery UIのオートコンプリートを機能させようとしていますが、問題が発生しています。ChromeでJavaScriptコンソールをオンにすると、入力を開始してもスクリプトからの応答が表示されません。

望ましい結果は、「City、State」形式で都市をリストするドロップダウンオートコンプリートリストです。私はここSOに関するいくつかの投稿を見て、この問題を解決するために多くの試みでコードを変更しましたが、運がありません。ガイダンス/修正に事前に感謝します。とても有難い。

これが私のjQueryUIコードです(code.jquery.comによってホストされている最新のライブラリを使用しています)

<script type="text/javascript">
$(document).ready(function()
{
    $('#locale').autocomplete(
    {
        source: "./state_autocomplete.php",
        minLength: 2
    });
});
</script>

これが私のフォームコードです:

<form name="frm_set_locale" method="post" action="/index2.php">
  <input type="text" name="locale" id="locale" class="textbox">
  <input type="submit" class="button" name="frm_submit_locale" value="Search">
</form>

そして、これが情報を引き出すmysqliスクリプトです

<?php
include "/includes/dbconn.php";

// Query to get the usable locations
    $locale = trim($_GET['term']);
    $return = array();

    $q = "SELECT `city`, `state` FROM `locales` WHERE `city` LIKE '%".$locale."%'";
    $r = mysqli_query($q, $connect);

    $json = "[";
    $first = true;

    while ($row = mysqli_fetch_assoc($r, $connect)){
        if(!$first){
            $json .=  ",";
        }else{
            $first = false;
        }

        $json .= "{'value':'".$row['city'].", ".$row['state']."}";
    }

    $json .= "]";

    echo $json;
?>
4

3 に答える 3

3

最初の State 値のリテラルが必要です。

"{'value':'".$row['city'].", 'state':".$row['state']."}"

2番目 Ajaxポストでデータをリクエストする必要があります

<script type="text/javascript">
$(document).ready(function()
{
          $.ajax({
               url: '/state_autocomplete.php',
               type: 'POST',
               dataType: 'json',
               success: function(data){
                     $('#locale').autocomplete(
                     {
                           source: data,
                           minLength: 2
                     });
               }
          });
});
</script>
于 2013-03-19T15:55:33.120 に答える
3

すべての助けをありがとう。私は state_autocomplete.php に新しいアプローチを取りました。本当にきれい。

<?php
// Database Connection
    include "/includes/dbconn.php";

// Query to get the usable locations
    $locale = $_GET['term'];

    $q = "SELECT `city`, `state` FROM `locales` WHERE `city` LIKE '%$locale%'";
    $r = mysqli_query($connect, $q);            

    $city_state = array();
    while($row = mysqli_fetch_assoc($r)){
        $result = $row['city'].", ".$row['state'];
        array_push($city_state, $result);
    }
    $json = json_encode($city_state);
    echo $json;
?>
于 2013-03-19T16:28:52.333 に答える
0

使用しているオートコンプリート関数は、意図したとおりにクエリ文字列を使用してajax呼び出しを実行しません<input type="text" name="locale" id="locale" class="textbox">

それのために仕事の変化

$q = "SELECT `city`, `state` FROM `locales` WHERE `city` LIKE '%".$locale."%'";

$q = "SELECT `city`, `state` FROM `locales`";

次に、スクリプトはすべての都市と州を生成し、オートコンプリート機能がユーザー入力と一致します。

于 2013-03-19T16:11:23.347 に答える