2010-11-21 9 views
1

jQuery UIを使用しようとしていますが、selectイベントを実行する方法がわかりません。JQuery UIオートコンプタでイベントを選択できません。

私は次のように自動入力補完をバインド:

$().ready(function() { 
    $("#txtPersonSearch").autocomplete({ 
     source: '<%=Url.Action("GetPeople") %>', 
     minLength: 3, 
     select: function (event, ui) { 
      // This code is never reached 
      console.log(ui); 
     } 
    }); 
}); 

私は、selectイベントにバインドできるようにするには何かが足りないのですか?

答えて

2

コントローラーの動作によって例外がスローされることがあります。のは、次のアクションを見てみましょう:に注意する

public ActionResult GetPeople(string term) 
{ 
    // the term parameter will contain the search string 
    // TODO: use the term parameter to filter the results from 
    // your repository. In this example the result is hardcoded 
    // to verify that the everything works. 
    return Json(new[] 
    { 
     new { id = "1", label = "label 1", value = "value 1" }, 
     new { id = "2", label = "label 2", value = "value 2" }, 
     new { id = "3", label = "label 3", value = "value 3" }, 
    }, JsonRequestBehavior.AllowGet); 
} 

物事:コントローラのアクションは、GET動詞(JsonRequestBehavior.AllowGet

  • でアクセス

    • コントローラのアクションは、各アイテムが持つJSON配列を返します。 ID、ラベル、および値のプロパティ
    • コントローラアクションで例外がスローされない

    そして:最後に

    $(function() { 
        $('#txtMovieSearch').autocomplete({ 
         source: '<%= Url.Action("GetPeople") %>', 
         minLength: 3, 
         select: function (evt, ui) { 
          console.log(ui); 
         } 
        }); 
    }); 
    

    そして正確にAJAX要求し、サーバからの応答としてサーバーに送信されたものを分析するためにFireBugを使用しています。

  • +0

    あなたは正しいです!よりシンプルなJSONリターンで動作しました。私のコントローラは、辞書を返します JSONにシリアル化するのに問題がありますか? – Dofs

    +0

    私の例を見てください。辞書をシリアライズするのに問題はありませんが、プラグインがレスポンスを理解するのに問題があります。私の例のようにフォーマットする必要があります。したがって、あなたの辞書で簡単な '.Select()'拡張メソッドを使うと、望む結果を得ることができます: 'return Json(dico.Select(x => new {id = x.Key、label = x.Value、value = x.Value})、JsonRequestBehavior.AllowGet); ' –

    +0

    ありがとうございました! – Dofs

    関連する問題