謝罪...jQueryのUI ASHXハンドラで再移入オートコンプリートテキストボックス10億jQueryのオートコンプリート質問を投稿するための
私はjQueryのUIのオートコンプリートテキストボックスに問題を抱えています。 キーストロークに続いてオートコンプリートデータソースを再設定するためにクライアントサイドで正しいことをしているかどうかは分かりません。次のように
私のaspxページ内のJavaScriptは、次のように
$(function() {
$("#<%=txtAuthorityName.ClientID%>").autocomplete({
minLength: 2,
delay: 0,
dataType: "json",
search: function(data) {
$.getJSON("AuthoritySearchHandler.ashx?SearchTerms=" + $("#<%=txtAuthorityName.ClientID%>").val() + "&AuthorityType=" + $("#<%=ddlSector.ClientID%>").val(), function(data) {
$("#<%=txtAuthorityName.ClientID%>").autocomplete("option", "source", data);
})
}
});
});
と私ASHXハンドラのコードは次のとおりです。
public void ProcessRequest(HttpContext context)
{
string searchTerms = context.Request["SearchTerms"] ?? string.Empty;
string authorityType = context.Request["AuthorityType"];
int authorityTypeId = 0;
string json = "";
if (int.TryParse(authorityType, out authorityTypeId) && authorityTypeId > 0 && searchTerms.Length > 0)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
var authorities = from a in BusinessLayer.SearchAuthorities(authorityTypeId, searchTerms)
select a.Name;
json = serializer.Serialize(authorities);
}
context.Response.ContentType = "application/json";
context.Response.Write(json);
context.Response.End();
}
私はASHXハンドラが何をやっているかなり確信していますそれは(私はHTTPレスポンスを確かめるためにフィドラーを使って調べた)。エラー "Microsoft JScript実行時エラー:オブジェクトが必要です"が表示されます。
$( "#<%= txtAuthorityName.ClientID%>")を$( '[id $ = "txtAuthorityName"]')に変更するだけで、ASPのページレンダリングプロセスがセレクタを生成しないようにすることができます。これは "セレクタで終わる属性"であり、ASPページのものを見つけるのに非常に便利です。 – lsuarez