添加FriendlyUrls 后,jQuery ajax 调用无法与 ASP.Net Web 表单一起使用

标签 jquery asp.net ajax webforms friendly-url

以下代码在没有为 ASP.Net Web 窗体项目打开FriendlyUrls 的情况下也能正常工作:

<script type="text/javascript">
    $(document).ready(function () {

        $.ajax({
            url: '/Default.aspx/GetData',
            type: 'POST',                
            beforeSend: function( xhr ) {
                xhr.setRequestHeader("Content-type", 
                     "application/json; charset=utf-8");
            },
            success: function (result) {
                var resultData = (result.d? result.d : result);
                alert(resultData);
            },
            error : function(){
                alert('error');
            }
        });

    });
</script>

以下是页面方法(WebMethod)的服务器端代码:

[System.Web.Services.WebMethod]
public static string GetData()
{                        
    return "Hello";
}

当我在浏览器中加载页面时,我可以看到响应为 { "d": "Hello"},这是预期的结果。

现在,如果使用 NuGet 包添加友好 URL Microsoft.AspNet.FriendlyUrls ,相同的代码将无法工作。由于FriendlyUrls已打开,我将jquery ajax调用中的url更改为“/Default/GetData”,但随后我不会收到预期的结果。相反,我收到的是 Default.aspx 页面的 html。

我正在努力找出为什么这行不通,我唯一改变的是为FriendlyUrls添加nuget包!

我一直在努力寻找解决方案,我能找到的最接近可读的答案是:

Using jQuery for AJAX with ASP.NET Webforms

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

请注意,给定答案中的所有相关帖子都不使用FriendlyUrls。我还看到一些答案表明 jquery ajax 调用可以与 MVC、WebAPI 一起正常工作,但我的项目仅限于使用 ASP.Net Web 表单。

我在这里做错了什么或者遗漏了什么吗?有人在他们的项目中遇到过同样的情况吗?如果是这样,您能回答一下这个问题如何解决吗?非常感谢您花时间阅读和回复。

最佳答案

在这上面花了太多时间后,我发现我需要在 App_Start/RouteConfig.cs 中更改它:

//settings.AutoRedirectMode = RedirectMode.Permanent;
settings.AutoRedirectMode = RedirectMode.Off;

关于添加FriendlyUrls 后,jQuery ajax 调用无法与 ASP.Net Web 表单一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663858/

相关文章:

javascript - Joomla 模块 jQuery 冲突

c# - 如何将 .ashx 处理程序与 asp :Image object? 一起使用

python - 如何在不重新加载的情况下返回主页

javascript - 如何在 for 循环(javascript)内的 ajax 调用内传递变量?

javascript - AJAX XHR请求onReadyStateChange事件顺序和次数澄清

javascript - 选择选项后无法使用 jQuery 禁用输入元素

javascript - jQuery 库中使用的设计模式

javascript - 通过单击将 div 的文本添加到列表中,并通过单击相同的 div 将其删除

c# - IIS 8.5 ScriptResource.axd 500 错误和 Sys 未定义

javascript - 如何: Dynamically move Google Gauge?