ASPX调用来自客户端JQuery的页面代码中的WebMethod-真正的交易

ASPX调用来自客户端JQuery的页面代码中的WebMethod-真正的交易,jquery,asp.net,webforms,webmethod,Jquery,Asp.net,Webforms,Webmethod,是的,我读过很多很多文章,这些文章都有一点侧重于某个特定的细节或其他细微的区别,而不是主要的问题,即“如何在.NET 4.5及以上版本的ASPX中调用带参数和返回值的代码隐藏方法”,简单的基础教程 我在2017年和2015年的VS比赛中大发雷霆 下面是一个简单的WebForm解决方案的代码(是的,我知道,但我必须在WebForm中完成,而不是我亲爱的MVC) 我在构建WebForm项目时使用了VStudio提供的基本母版页 以下是SiteMasterPage的有趣部分(请注意,我使用的是Enab

是的,我读过很多很多文章,这些文章都有一点侧重于某个特定的细节或其他细微的区别,而不是主要的问题,即“如何在.NET 4.5及以上版本的ASPX中调用带参数和返回值的代码隐藏方法”,简单的基础教程

我在2017年和2015年的VS比赛中大发雷霆

下面是一个简单的WebForm解决方案的代码(是的,我知道,但我必须在WebForm中完成,而不是我亲爱的MVC)

我在构建WebForm项目时使用了VStudio提供的基本母版页

以下是SiteMasterPage的有趣部分(请注意,我使用的是EnablePageMethod):


任何帮助都将不胜感激,我不想让我的头撞到墙上

好吧,我终于自己找到了

两件非常重要的事情是:

1-在route.config set
settings.AutoRedirectMode=RedirectMode.Off中

2-使用
Json.Stringify
从ajax发送数据

我的最终ajax代码:

 $("#btnTest01").click(function (e) {
            $.ajax({
                type: "POST",
                url: "<%= ResolveUrl("Default.aspx/TestReturnResult") %>",
                async: true,
                data: JSON.stringify({ data01: "Test01", data02: "Test02" }),
                contentType: 'application/json',
                dataType: 'json'
            })
                .done(function (result) {
                    $("#content").html(result.d);
                });
        });
$(“#btnTest01”)。单击(函数(e){
$.ajax({
类型:“POST”,
url:“”,
async:true,
数据:JSON.stringify({data01:“Test01”,data02:“Test02”}),
contentType:'应用程序/json',
数据类型:“json”
})
.完成(功能(结果){
$(“#content”).html(result.d);
});
});

好的,我终于自己找到了

两件非常重要的事情是:

1-在route.config set
settings.AutoRedirectMode=RedirectMode.Off中

2-使用
Json.Stringify
从ajax发送数据

我的最终ajax代码:

 $("#btnTest01").click(function (e) {
            $.ajax({
                type: "POST",
                url: "<%= ResolveUrl("Default.aspx/TestReturnResult") %>",
                async: true,
                data: JSON.stringify({ data01: "Test01", data02: "Test02" }),
                contentType: 'application/json',
                dataType: 'json'
            })
                .done(function (result) {
                    $("#content").html(result.d);
                });
        });
$(“#btnTest01”)。单击(函数(e){
$.ajax({
类型:“POST”,
url:“”,
async:true,
数据:JSON.stringify({data01:“Test01”,data02:“Test02”}),
contentType:'应用程序/json',
数据类型:“json”
})
.完成(功能(结果){
$(“#content”).html(result.d);
});
});

此外,您似乎在端点上返回字符串,并在ajax调用中使用JSON。您确定要发布到正确的位置吗?在浏览器的调试工具中查看网络流量。另外,使用Postman或类似工具查看是否可以直接点击web方法。@Kosch Json编码不应该由JQuery自动处理?@mason是的,很明显我这样做了,然后你得到了500或401错误500或401?是哪一个?而且,似乎您在端点上返回字符串,并在ajax调用中使用JSON。您确定要发布到正确的位置吗?在浏览器的调试工具中查看网络流量。另外,使用Postman或类似工具查看是否可以直接点击web方法。@Kosch Json编码不应该由JQuery自动处理?@mason是的,很明显我这样做了,然后你得到了500或401错误500或401?是哪一个?
Imports System.Web.Services

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

    End Sub

    <WebMethod()>
    Public Shared Function TestReturnResult(data01 As String, data02 As String) As String

        Return $"<span class='badges'>{data01} is great with {data02}</span>"

    End Function

End Class
Status code: 401 / Unauthorized
 $("#btnTest01").click(function (e) {
            $.ajax({
                type: "POST",
                url: "<%= ResolveUrl("Default.aspx/TestReturnResult") %>",
                async: true,
                data: JSON.stringify({ data01: "Test01", data02: "Test02" }),
                contentType: 'application/json',
                dataType: 'json'
            })
                .done(function (result) {
                    $("#content").html(result.d);
                });
        });