jQuery AJAX 没有命中 WebMethod

jQuery AJAX doesn't hit WebMethod

您可能想知道它是重复的 post。但是,我在各种博客上进行了很多研究,但我不明白我在做什么错误。

我正在调用如下网络方法

 $.ajax({
    type: "POST",
    url: "test.aspx/Save",
    data: "{ 'Id': 'test', 'newvalue': 'test' }",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function () {
        alert('success');
    },
    error: function (xhr, status, error) {
        alert(err.Message);
    },
    failure: function () {
        alert('failure');
    }
});

我收到警报 "Success" 但我从未看到它访问 WebMethod。我的网络方法如下

[WebMethod]
    public static void Save(string Id, string newvalue)
    {
        //my code

    }

我保留了断点,但它从未命中。我也试过 $Post 但同样的问题

 $.post("test.aspx/Save", { Id: "test", newvalue: "test" }, function (data, status) {
    alert('second');
});

None 这些调用确实命中了 web 方法,但我在 Ajax 调用中收到成功警报,在 post 调用中收到 "second" 警报。请告知,如果你们中的任何人有任何线索。谢谢

对于 ASP.NET 页面,您可以创建一个简单的 javascript 函数并像这样调用它:

<script type="text/javascript">
function dostuff() {

PageMethods.Save("new Id", "new Value"); //this gets any webmethod registered on your page(in this case, the "Save" you created)

}
</script>

ON MVC:出于某种原因,您似乎无法使用 ajax 调用在控制器页面上声明的静态函数,但是一旦我删除了 static 关键字,它就像一个魅力。

我有办法解决这个问题。在我的 RouteConfig.cs 中,RedirectMode 设置不正确。将模式更改为关闭后,一切正常。

public static void RegisterRoutes(RouteCollection routes)
    {
        var settings = new FriendlyUrlSettings();
        settings.AutoRedirectMode = RedirectMode.Off;
        routes.EnableFriendlyUrls(settings);
    }