jQuery AJAX没有击中WebMethod

时间:2015-01-28 18:29:48

标签: jquery asp.net ajax post webmethod

您可能会将其视为重复的帖子。但是,我在各种博客上都进行了很多研究,但我无法理解我在做什么错误。

我正在调用下面的网络方法

 $.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');
    }
});

我收到警报“成功”但我从未看到它击中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');
});

这些调用都没有点击Web方法,但我在后调用中获得Ajax调用成功警报和“秒”警报。请告知,如果你们中有人有任何线索。感谢

2 个答案:

答案 0 :(得分:3)

我有一个解决方案。在我的RouteConfig.cs中,未正确设置RedirectMode。将模式更改为关闭后,一切正常。

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

答案 1 :(得分:0)

对于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关键字,它就像魅力一样。