シナリオ:ユーザーが に名前を入力するTextbox
と、結果が に表示されますjQueryUI
$("#textboxElement").autocomplete({...})
。ユーザーが提案された結果 (氏名 (ユーザー名)) の 1 つを選択すると、それが に表示されます#textboxElement
。ユーザーが名前付きの「アクセス許可」をクリックするbutton
と、選択したユーザーのアクセス許可のリストが既存の HTML テーブルに入力されて返されます。ボタンのクリックは、ユーザーの選択を取得し、2 つの括弧の間の最後のユーザー名のみを抽出し、Permission オブジェクトのリストを返す Web サービスのパラメーターとして渡す必要があります。
問題:ページで何も起こりません。エラーは表示されません。他の jQUEryUI ユーザー コントロールはページ全体にあり、機能しません。検索でさえ、ページ上の他のボタン クリック イベントでは機能しません。Ajax コードはエラー (予期しない ".)を返します。どこで間違っていますか?
jQueryUIコード:
$("#showPermission")
.button()
.click(function () {
var username = $('input:text[name=nameSearch]').val();
//extracting a string of text that lies between two (parenthesis) from the end of the string
var result = username.split('(');
for (var i = 1; i < result.length; i++) {
$("#txtSelectedUsername").val(result[i].split(')')[0]);
}
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Search.aspx/GetUserPermission",
data: "{'username':'" + $("#txtSelectedUsername").val() + "'}",
dataType: "json",
success: function (data)
{
$.each(data, function(key, val)
{
var row = $("<tr />");
$("<td />").text(val.username).appendTo(row);
$("<td />").text(val.level).appendTo(row);
$("<td />").text(val.location).appendTo(row);
$("<td />").text(val.role).appendTo(row);
row.appendTo("table.usersPermissionTbl");
});
},
error: function (xhr, textStatus, errorThrown)
{
var errorMessage = "Ajax error: " + this.url + " textStatus: " + textStatus + " errorThrown: " + errorThrown + " xhr.statusText: " + xhr.statusText + " xhr.status: " + xhr.status;
alert(errorMessage);
if (xhr.status != "0" || errorThrown != "abort")
{
alert(xhr.responseText);
}
}
});//end of ajax
});//end of click event
HTML
<table id="usersPermissionTbl" class="ui-widget ui-widget-content">
<thead>
<tr class="ui-widget-header ">
<th>Username</th>
<th>Level</th>
<th>Location</th>
<th>Role</th>
</tr>
</thead>
<tbody>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
C# コード
public static Permission[] GetUserPermission(string username)
{
List<Permission> allPermission = new List<Permission>();
SqlConnection con = new SqlConnection();
con.ConnectionString = connectionString;
string sqlString = "SELECT username, level, location, role from URTable WHERE username = '" + username + "'";
SqlDataAdapter sadp = new SqlDataAdapter(sqlString, con);
DataSet ds = new DataSet();
sadp.Fill(ds);
foreach (DataTable table in ds.Tables)
{
foreach (DataRow dtrow in table.Rows)
{
Permission permission = new Permission();
permission.userName = dtrow["username"].ToString();
permission.level = dtrow["level"].ToString();
permission.location = dtrow["location"].ToString();
permission.role = dtrow["role"].ToString();
allPermission.Add(permission);
}
}
con.Close();
return allPermission.ToArray();
}
public class Permission
{
public string userName { get; set; }
public string level { get; set; }
public string location { get; set; }
public string role { get; set; }
}