0

シナリオ:ユーザーが に名前を入力する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; }
    }
4

2 に答える 2

0

aspx のメソッドをWebMethodとしてマークします。

于 2013-10-30T14:00:36.530 に答える