0

私はここで少し立ち往生しており、jQuery オートコンプリートを機能させることができないようです。JSON ドキュメントのプルからオートコンプリートしようとしています。

いいえ:

http://REMOTE_HOST/names.json

次のようなものを返します:

[{"label":"Brian House", "id" : 1},
{"label":"Joe Green", "id" : 2},
{"label":"Fisher Gennings", "id" : 3},
{"label":"Sheila Williams", "id" : 4},
{"label":"Brett Nelson", "id" : 5},
{"label":"Angie Katz", "id" : 6},
{"label":"Zoe Middleton", "id" : 7},
{"label":"Parker Jones", "id" : 9}]

私がやりたいことは、テキスト フィールド (user_friend_name) にラベル オートコンプリートを設定し、非表示フィールド (user_friend_name_id) に ID を入力することです。

#user_friend_name
#user_friend_name_id

私が現在使用しているコーヒースクリプト。

$(document).ready ->
        $('#user_friend_name').autocomplete
                source: "http://REMOTE_HOST/names.json"
                select: (event,ui) -> $("user_friend_name_id").val(ui.item.id)

現在、すべての名前の 1 つの JSON プルを取得しているように見えますが、入力時に選択やフィルタリングは行われません。ソースとして標準配列 ['foo', 'food', 'trees'] だけを使用しても問題ないようです。

4

2 に答える 2

1

上記のようにデータが返されていると仮定すると、ui.item.idアクセスする正しいプロパティです。

私はあなたの例のフィドルを作りました。で遊んでconsole.log()console.dir()プロパティをデバッグしてみてください。

http://jsfiddle.net/fMWqU/

それでも問題が解決しない場合は、json ドキュメントに問題がある可能性があります。クロスオリジン エラーを防ぐために、ドキュメントがスクリプトと同じドメインにあることを確認してください。また、過去に、Windows の行末を含む json ドキュメントが原因で一部のブラウザーが失敗することにも気付きました。通常の実行を試して、done() および fail() ハンドラー$.ajax()で使用してください。console.dir()

xhr = $.ajax
  url : 'http://REMOTE_HOST/names.json'
  dataType : 'json'

xhr.done ->
  console.log arguments

xhr.fail ->
  console.log 'Fail! ', arguments
于 2012-06-24T03:56:05.397 に答える
0

IDプロパティではなく値を持つべきだと思います。私はコーヒースクリプトに慣れていませんが、これは読みやすいと確信しています:

$.getJSON("http://REMOTE_HOST/names.json", function(response) {
    var newData = response.map(function(el) { return {label: el.label, value: el.id })
    $('#user_friend_name').autocomplete
        source: "http://REMOTE_HOST/names.json"
        select: (event,ui) -> $("user_friend_name_id").val(ui.item.value)
})
于 2012-06-24T03:20:00.410 に答える