您可能会将其视为重复的帖子。但是,我在各种博客上都进行了很多研究,但我无法理解我在做什么错误。
我正在调用下面的网络方法
$.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调用成功警报和“秒”警报。请告知,如果你们中有人有任何线索。感谢
答案 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关键字,它就像魅力一样。