我正在尝试调用jQuery函数$.get()
来调用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中的方法必须是静态的
答案 0 :(得分: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,microsoft想要变量末尾的.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"); });