1

我正在尝试调用 jQuery 函数$.get()来调用 myWebMethod但它只是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 微软希望在变量末尾使用 .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 回答