1

$.get()jQuery 関数を呼び出して呼び出しを行おうとしていますが、コード ビハインドでイベントにWebMethodヒットするだけです。Page_Loadリクエストが firebug に送信されているのを確認できますが/admin/manage-users.aspx/deleteUser?u=user1、WebMethod にヒットすることはありません。

jquery

$('#delete').each(function () {
    $(this).click(function () {
        var userName = $(this).closest('tr').find('span.userName').text();
        $.get('/admin/manage-users.aspx/deleteUser', { u: userName });
    });
});

aspx.cs

[WebMethod]
public void deleteUser() {
    string userName = Request.QueryString["u"];
    if(!string.IsNullOrEmpty(userName)) {
        if(Membership.DeleteUser(userName))
            Response.Redirect(Request.Url.ToString());
    }
}

解決

彼が私を正しい方向に向けてくれたので、以下のbugzの功績を認めました.

[WebMethod]aspx 内でメソッドを機能させるには、静的でなければなりません

4

1 に答える 1

1

詳細情報へのリンクはこちら

詳しくは

     $.ajax({
                    type: "POST",
                    url: "'/admin/manage-users.aspx/deleteUser'",
                    data: "{'userName ' : '" + userName + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(data) {
        //do something on success

                    },
                    error: function(ex) {
       //do something on failure

                    }
                });    

また、データまたは変数を返す場合に成功した場合は、jquery/ajax を使用しているときに何らかの理由で data.d を使用していることを確認してください。これを理解するのに時間がかかりました。

これを試してみてください。deleteUser メソッドが呼び出されないことをデバッグするときに推測します。

var jqxhr = $.get("admin/manage-users.aspx/deleteUser",  { userName: userName }  function() {
    alert("success");
  })
  .success(function() { alert("second success"); })
  .error(function() { alert("error"); })
  .complete(function() { alert("complete"); });
于 2012-07-16T17:56:06.223 に答える