为什么 jquery ajax 方法只能调用 WebMethod
本文关键字:调用 WebMethod 方法 jquery ajax 为什么 | 更新日期: 2023-09-27 18:34:30
在使用jQuery Ajax方法时,我知道该方法只能调用webmethod或get/post of mvc。为什么我不能使用 ajax 方法调用普通函数?
例:
$.ajax({
type: "POST",
url: "CS.aspx/GetCurrentTime",
data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function(response) {
alert(response.d);
}
});
假设,我正在调用CS.aspx页面的方法GetCurrentTime((,那么我需要用属性WebMethod装饰GetCurrentTime((,以便从ajax方法进行调用。
你得到的是预期的行为。这个问题与jQuery无关,而是与服务器端代码有关。
您通常通过其 URL 请求资源以获取该资源。
CS.aspx
是指向该页面的 URL。
使用CS.aspx/GetCurrentTime
实际上是一个不同的URL,要求不同的资源。
这就是WebMethodAttribute
的用武之地。它告诉 ASP.NET 可以通过 URL CS.aspx/GetCurrentTime
获得新资源,这样 ASP.NET 运行时就知道在对该 URL 发出请求时该怎么做。
作为旁注:ASP.NET MVC在其URL中不使用.aspx(至少默认情况下不是(。最好检查您的设置并理清您的事情。
编辑:如果你使用MVC,你将在一个控制器(而不是页面(中,你将编写操作(而不是方法(。在这种情况下,不需要 WebMethodAttribute,因为默认情况下,所有公共操作都可以通过 RouteConfig 中配置的 URL 使用。
默认路由如下:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
希望这有助于解决您的问题。