webmethod没有捕获ajax POST

时间:2015-11-29 13:53:51

标签: c# .net ajax post webmethod

我正在尝试使用ajax调用服务器端方法。这就是我所拥有的:

客户端:

function accept(thisButton) {
    $.ajax({
        type: "POST",
        url: "Default.aspx/editMaxUsers",
        data: '{param: "' + $(thisButton).prev().val() + '" }',
        contentType: "application/json: charset=utf-8",
        dataType: "json",
        success: function (result) { alert("successful" + result.d); }
    });
}

服务器端:

[System.Web.Services.WebMethod]
public static string editMaxUsers(string maxUsers)
{
    return maxUsers;   //I also have a breakpoint here that isn't stopping the execute
}

当我用firebug检查呼叫时,我可以看到POST正在发送并且看起来很好。但似乎在服务器端没有发生任何事情。我做错了什么?

编辑:不知道它是否相关,但网址已包含一些参数。我尝试过以下url: "Default.aspx/" + window.location.search + "editMaxUsers",但没有成功。

2 个答案:

答案 0 :(得分:3)

WebMethod的参数需要与您传入的参数名称相匹配。 变化

data: '{param: "' + $(thisButton).prev().val() + '" }',

data: '{maxUsers: "' + $(thisButton).prev().val() + '" }',

答案 1 :(得分:0)

1.转到App_Start / RouteConfig并更改

settings.AutoRedirectMode = RedirectMode.Permanent;

 settings.AutoRedirectMode = RedirectMode.Off;

2.如同@ F11所说,WebMethod中的参数和json对象中的键应该具有相同的名称,我强烈建议不要手动构建json对象。最好这样做:

function accept(thisButton) {
 var data = {};
 data.maxUsers = $(thisButton).prev().val(); 
$.ajax({
    type: "POST",
    url: "Default.aspx/editMaxUsers",
    data: JSON.stringify(data),
    contentType: "application/json: charset=utf-8",
    dataType: "json",
    success: function (result) { alert("successful" + result.d); }
});
}