jQuery Ajax在url重写后没有调用webmethod

时间:2015-05-14 12:43:39

标签: jquery asp.net ajax

我的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&amp;page=$2" processing="stop" />

3 个答案:

答案 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”。

中添加“ /”