0

VS2013 で新しい WebForms アプリケーションを作成します。何も変更せず、シンプルなページを作成しました。ユーザーがボタンをクリックしたときに、クライアント側でこのテーブルをロードしたい

<table id="tblHelpRow">
        <thead>
            <tr class="title">
                <th>F2
                </th>
                <th>F3
                </th>
            </tr>
        </thead>
        <tbody id="helpRowBody">         
            <%=MyRow %>  
        </tbody>
    </table>
<asp:LinkButton ID="lnkEdit" runat="server" onclick="fnEdit();" />

これは私のスクリプトコードです:

function fnEdit() {
    BindGridView();
};
function BindGridView() {
    rowid = {rowID:2};
        $.ajax({
            type: "POST",
            url: "Default.aspx/GetRow",
            contentType: "application/json; charset=utf-8",
            data: param,
            dataType: "json",
            success: function (data) {
                 alert(data);
            }
        });
}

コード ビハインドに、結果をパブリック プロパティに格納する WebMethod があります。DataSource はセッションに保存しますが、rowID は jquery から渡す必要があります。

        [WebMethod]
        public static string GetRow(int rowID)
        {
                DataTable dt = (DataTable)HttpContext.Current.Session["SourceData"];
                MyRow = "<tr>" +
                "<td>" + dt.Rows[rowID]["F2"].ToString() + "</td>" +
                "<td>" + dt.Rows[rowID]["F3"].ToString() + "</td>" +
                "</tr>";
            return "done";
    }

しかし、私は何の結果も得られません。ブレークポイントを成功させたときに、「認証に失敗しました」というエラーが表示され、この Web メソッドは実行されませんでした。どうしたの?私はant認証設定を変更しませんでした。

4

3 に答える 3

1

使用する

$.ajax({
        type: "POST",
        url: "Default.aspx/GetRow",
        contentType: "application/json; charset=utf-8",
        data: {rowID:2},
        dataType: "json",
        success: function (data) {
             alert(data);
        }
    });
于 2014-12-17T06:38:03.850 に答える
1

ScriptMethod 属性を削除してみてください。POST アクション タイプを指定していますが、ScriptMethod はデフォルトでリクエストを GET に強制すると思います。また、param は単なる整数ではなく JSON 文字列である必要があると思います。

var param = {rowID:2};
$.ajax({
    type: "POST",
    url: "Default.aspx/GetRow",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(param),
    dataType: "json",
    success: function (data) {
         alert(data);
    }
});
于 2013-11-12T17:43:42.517 に答える