0

jQuery UI Autocompleteプラグインを使用して、リモートデータソースからの姓に基づいてシステム内のユーザーの一覧を表示する検索ボックスがアプリケーションにあります。jQuery UIを使用して表示値とid値を区別する方法リモートデータソースを使用したオートコンプリートプラグイン?

ユーザーがオートコンプリートリストからクリックされると、ブラウザはそのユーザーの個々のページにリダイレクトされます(GETパラメータに基づいて)。ただし、ユーザーページのGETパラメーターは、表示値 "last_name、first_name"とは異なるユーザー "id"です。

ユーザーの「id」をGETパラメータにプッシュするにはどうすればいいですか?最初と最後の値はまだドロップダウンに表示されていますか?

リモートデータソースを使用しているときは、ここで質問されたのと同様の質問がありましたが、何もありませんでした。

あなたが提供できるヘルプは素晴らしいでしょう!

Javascriptを:

$(document).ready(function() { 

    $(".user_autocomplete").autocomplete({ 
      source: "../../db/users.php", 
      minLength: 0, 
      focus: function (event, ui) { 
       this.value = ui.item.value; 
      },   
    }).bind("autocompleteselect", function(event, ui) { 
     window.location.href = "https://stackoverflow.com/users/index.php?id=" + this.value; 
    }); 

}); 

リモートデータソース(users.php)

<?php 

$return_arr = array(); 

if(isset($_GET['term'])) { 
    $mysearchString = $_GET['term']; 
} 

$sth = $dbh->query("SELECT id, first_name, last_name FROM users 
        WHERE last_name LIKE '$mysearchString%' 
        ORDER BY last_name"); 

while ($row = $sth->fetch()) { 

    $row_array = $row['last_name'].', '.$row['first_name']; 

    array_push($return_arr,$row_array); 

} 

echo json_encode($return_arr); 

?> 
+0

見たことある?プラグインはすべてを同じインターフェースに正規化しているので、データソースは重要ではありません。 – blockhead

+0

2つの問題。私は表示値とid値の両方を含むようにリモートデータソースの配列をどのようにフォーマットするのかよくわかりません。また、これらの値を両方ともプラグインに渡す方法がわかりません。 – Michael

答えて

2

(表示)値とは異なるIDを持っているために、あなたは返す必要がありますJSONは以下のようなオブジェクトの配列をエンコードします:

[ 
    { 
     "id":"1", 
     "value":"Doe, John" 
    }, 
    { 
     "id":"2", 
     "value":"Smith, Mary" 
    } 
] 

ui.item.idを使用して、選択したIDを取得できます。

注:「値」プロパティとは異なる「ラベル」プロパティを指定することもできます。

ローカルデータは文字列の単純な配列にすることができ、またはそれは、ラベルや値 プロパティのいずれか、または両方で、配列内の各アイテムの のオブジェクトが含まれています。ここではドキュメントからの情報です。 ラベルのプロパティは、 の候補メニューに表示されます。 の値は、ユーザ がメニューから何かを選択した後に入力要素に挿入されます。プロパティーが1つしか指定されていない場合は、 両方のプロパティーが使用されます。値プロパティのみを指定した場合は、 という値もラベルとして使用されます。

EDIT:

私はPHPの男ではないんだけど、私は、JSON配列は、このようなものになるだろう作成したコードを想像:「他の例が間違って何

<?php 
$return_arr = array(); 

    ... snip ... 

while ($row = $sth->fetch()) { 
    $row_array = array(
     "id" => $row['id'], 
     "value" => $row['last_name'].', '.$row['first_name'] 
    ); 
    array_push($return_arr, $row_array); 
} 
echo json_encode($return_arr); 
?> 
+0

ありがとうございます。しかし、上記のリモートデータソースコードを使ってこの配列を作成し、それをプラグインに渡すにはどうすればよいですか? – Michael

+0

ああ、ありがとう!完璧に働いてくれてありがとう! – Michael

関連する問題