我的jQuery AJAX函数没有调用我的webmethod。这是我的代码:
$.ajax({
type: "POST",
url: "Search.aspx/GetCustomers",
data: '{pageIndex:' + pageIndex + ',searchText:"' + $('#HiddenField1').val() + '",SearchBy:"' + $('#ddlSelectProfile').val() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
},
error: function (response) {
alert(response.d);
}
});
[WebMethod]
public static string GetCustomers(int pageIndex, string searchText, string SearchBy)
{
return GetCustomersData(pageIndex,searchText, SearchBy ).GetXml();
}
和web.config
<rewrite url="~/Search/(.+)-(.+).html" to="~/Search.aspx?MyTitleId=$1&page=$2" processing="stop" />
答案 0 :(得分:0)
在javascript中更改“url:”Search.aspx / GetCustomers“”至“url:”Search / GetCustomers“,”您正在使用此规则对* .aspx的访问权限进行操作;)
答案 1 :(得分:0)
在ASP.NET Web窗体中,当链接看起来像用于Web方法的链接时,就会出现这种挑战。 &#34; /WebPageName.aspx/WebMethodName",在为删除文件扩展名而设置的URL重写规则中不予以豁免(例如,删除&#34; .aspx&#34;)。因此,必须在URL重写规则中添加以下条件,这看起来像......
<rule name="removeAspxExtension" stopProcessing="true">
<match url="(.*)\.aspx" />
<conditions>
<!--This is the condition to be added.-->
<add input="{URL}" negate="true" pattern="(.*)\.aspx/(.*)" />
</conditions>
<action type="Redirect" url="{R:1}" redirectType="Permanent" />
</rule>
此外,如果在RouteConfig.cs中使用了RegisterRoutes(),则以下行(以及所有不够具体的行,以便它们可能影响看起来像&#34; /WebPageName.aspx/WebMethodName&的链接#34;)也必须注释掉,如下所示......
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// The commented code lines...
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//);
}
现在,当从客户端访问Web方法时,例如通过使用jQuery Ajax,事情应该按预期工作。
答案 2 :(得分:-1)
url:“ Search.aspx / GetCustomers” => url:“ /Search.aspx/GetCustomers”。
在
中添加“ /”