添加FriendlyUrls时,jQuery ajax调用不适用于ASP.Net Web窗体

紫杉醇

如果没有为ASP.Net Web Forms项目打开FriendlyUrl,则以下代码可以正常工作:

<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包Microsoft.AspNet.FriendlyUrls添加友好的url ,则相同的代码将不起作用。当FriendlyUrls打开时,我将jquery ajax调用中的URL更改为“ / Default / GetData”,但随后我没有收到预期的结果。而是我收到了Default.aspx页面的html。

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

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

将jQuery for AJAX与ASP.NET Webforms结合使用

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

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

我在这里做错了什么还是错过了什么?有没有人在他们的项目中遇到过相同的情况?如果是这样,请您回答如何解决?多谢您抽出宝贵的时间阅读和回复。

紫杉醇

因此,最终我对项目进行了以下更改,从而解决了我的问题:

  1. 将FriednlyUrls添加到项目中。

  2. 删除RegisterRoutes方法中设置App_Start / RouteConfig.cs中的settings.AutoRedirectMode属性的

    (请注意,将其设置为RedirectMode.Permanent或RedirectMode.Off不适用于我)

  3. system.web部分下的web.config中添加授权

    <authorization>
        <allow users="*" />
    </authorization>
    
  4. 修改ajax调用中的URL,以使用Microsoft.AspNet.FriendlyUrls.Resolve函数来获得正确的URL,如下所示:

    <script type="text/javascript">
       $(document).ready(function () {
           $.ajax({
              url: '<%=Microsoft.AspNet.FriendlyUrls.FriendlyUrl.Resolve("/Default.aspx/GetData")%>',
              type: 'POST',                
              contentType: 'application/json; charset=utf-8',
              dataType: 'json',
              success: function (result) {
                 var resultData = (result.d? result.d : result);
                 alert(resultData);
              },
              error : function(){
                 alert('error');
              }
       });
     });
    </script>
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

jQuery Ajax调用不适用于移动设备

调用SignalR Hub不适用于Asp.Net Core Web API

ASP.NET链接按钮不适用于jquery

ASP.net Web窗体-动态窗体-C#

AJAX Post 未调用 ASP.NET Web 窗体 [WebMethod]

带有JQuery Ajax请求的ASP.NET Web窗体方法失败

从更新面板(ASP.NET Web窗体)内部触发时,为什么不调用我的jQuery click事件?

单击 jquery 调用不适用于按钮单击

在ASP.NET Web窗体内使用ASP.NET Web API时出现“方法不允许”错误

您在哪里在默认的ASP.NET Web窗体中添加到CSS的链接?

将Angular添加到现有的ASP.NET Web窗体项目中?

将角色列添加到ASP.NET Web窗体中的DataGrid

如何扩展添加Blazor的ASP.Net Web窗体应用程序?

Web配置Windows授权。适用于部署,但不适用于本地。ASP.net

发布网站时无法发送邮件-ASP.NET Web窗体

如何使用 JavaScript/jQuery 从 ASP.NET Web 窗体的 GridView 内部同时上传多个文件?

如何在ASP.Net Web窗体应用程序中从Jquery安全地调用用于内部目的的Web服务(.asmx)?

Bootstrap Modal 不适用于 asp.net Web 应用程序

Asp.net .core web api 版本控制不适用于 Url 路径段

Postman JSON 不适用于 ASP.NET Core Web API

ASP.NET Core Web API 不适用于 Azure

将ASP.NET MVC区域添加到ASP.NET Web窗体现有项目

ASP.NET MVC模型绑定不适用于AJAX GET,但适用于Post

添加自定义声明不适用于asp.net核心标识

保存时编译不适用于VS 2015 RC中的ASP.NET 5应用

jQuery自动完成功能不适用于ASP.NET MVC 5

Azure中的捆绑不适用于Bootstrap和JQuery,ASP.NET MVC 5

jQuery验证不适用于asp.net文本框

对Web-api的ajax调用适用于GET,但不适用于POST