2011-12-25 8 views
5

私はこれについて永遠に働いていますし、他のすべての例を検索しても、それを理解できないようです。初めてjquery UIオートコンプリートを使用しようとしました。これはすべて一緒に。ここに私のJSです:jQueryオートコンプリートリモートJSONデータソースがデータを返さない

$(document).ready(function() { 
$("#search-title").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: "/include/autocomplete", 
      dataType: "json", 
      data: { 
         term: request.term  
        }, 
      success: function (data) { 
       response($.map(data.stuff, function (item) { 
        return { 
         label: item.name, 
         value: item.name 
        }; 
       })); 
      } 
     }); 
    }, 
    minLength: 2, 
    focus: function (event, ui) { 
     $(event.target).val(ui.item.label); 
     return false; 
    }, 
    select: function (event, ui) { 
     $(event.target).val(ui.item.label); 
     window.location = ui.item.value; 
     return false; 
    } 
}); 
}); 

はFirebugのでレスポンスをチェックアウト、私は私がここに適切な形式のJSONを取得していると思う:

{"stuff":[ {"label" : "Dragon", "value" : "http://site.com/animal/firebreathers"}] } 

しかし、それはフックいない何らかの理由で。 minLengthを押すと、小さな空のボックスが検索フィールドの下に開きますが、そこには何も表示されません。

更新:「警告(アイテム);」を追加すると、応答呼び出しで、「site.comのページにはobject object」というメッセージが表示されます。これが問題になる可能性がありますか?

+0

アイテムはオブジェクトではありませんか? item.valueなどの項目でパラメータにアクセスしようとしましたか? –

+0

ありがとうございました!あなたのおかげで私はついに答えました。 –

答えて

2

最後に私の質問のヒントのコメントのおかげでそれを理解しました。

は、私はjqueryのUIサイトからコピーされたリターンでは、私が持っていた:

label: item.name, 
value: item.name 

をすることを変更する:

label: item.label, 
value: item.value 

jQueryを使って私の闘争を解決しました。これが良い練習であるかどうかはわかりませんが、最終的にはうまくいきます!

0

データ型にjsonの代わりにjsonpを使用してみてください。

関連する問題