【问题标题】:webmethod isn't catching ajax POSTwebmethod 没有捕获 ajax POST
【发布时间】:2015-11-29 13:53:50
【问题描述】:

我正在尝试使用 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 已经包含一些参数。我尝试了以下url: "Default.aspx/" + window.location.search + "editMaxUsers",但没有成功。

【问题讨论】:

  • 您的响应是否成功?如果是,那么您可能没有使用正确的代码进行调试。通常,当您在 VS 的源代码管理中打开一个不同的分支并在 IIS 中运行其他一些分支时,就会发生这种情况
  • @VidhyardhiGorrepati 不,我没有得到任何回应(据我所知)
  • 调用服务器端方法时得到什么状态码?能在jquery ajax方法中添加错误回调
  • @F11 状态码为 200 OK。我添加了一个错误回调并触发了它。不知道如何获得更多信息,我刚刚添加了一个alert('failed');
  • @F11 你发布的第一个链接是我关注的。有什么我错过的具体内容吗?

标签: c# .net ajax post webmethod


【解决方案1】:

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

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

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

【讨论】:

  • 仍然没有解决任何问题。与以前完全相同的行为 =/ 我已经开始了一种解决方法,所以我可以跳过整个 ajax 的东西 ^^
【解决方案2】:

1.进入App_Start/RouteConfig并更改

settings.AutoRedirectMode = RedirectMode.Permanent;

 settings.AutoRedirectMode = RedirectMode.Off;

2.正如@F11所说,WebMethod中的参数和json对象中的key应该同名,我强烈建议不要手动构建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); }
});
}

【讨论】:

    猜你喜欢
    • 2015-03-27
    • 2011-09-25
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多