C# 使用ASP.net制作返回JSON格式数据的简单页面

C# 使用ASP.net制作返回JSON格式数据的简单页面,c#,asp.net,C#,Asp.net,我是ASP的新手。我想创建一个ASP页面,在请求时返回JSON格式的数据。我学习了一些教程,现在看到的只是一个完整页面的链接,其中包含代码中的回调。因此,从本质上讲,服务器输出了大量HTML,这显然不是有效的JSON。所以我唯一的问题是,我该如何制作这样一个网页。我希望我的应用程序设计为当我进入一个网页时,比如说http://localhost:8080(或类似内容),我的C#code中的回调函数或函数连接到数据库,收集一些信息并将其作为有效JSON中的响应发送回去。我不是在寻找可以达到相同效果

我是ASP的新手。我想创建一个ASP页面,在请求时返回JSON格式的数据。我学习了一些教程,现在看到的只是一个完整页面的链接,其中包含代码中的回调。因此,从本质上讲,服务器输出了大量HTML,这显然不是有效的JSON。所以我唯一的问题是,我该如何制作这样一个网页。我希望我的应用程序设计为当我进入一个网页时,比如说
http://localhost:8080
(或类似内容),我的C#code中的回调函数或函数连接到数据库,收集一些信息并将其作为有效JSON中的响应发送回去。我不是在寻找可以达到相同效果的库,而是想知道如何通过简单地使用一组
Response.Write
语句来实现它

请原谅,我可能会说我与我的概念不一致,因为我对这整件事真的很陌生

非常感谢您的帮助

问候,, p1n3appl3

编辑:我目前正在使用以下JavaScript代码:

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:47949/Default.aspx/NameChange");
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && xhr.status == 200) {
        alert(xhr.responseText);
    }
}

xhr.send("");
它进行调用,一切正常,但问题是它再次返回“Default.aspx”页面的整个代码。我的意思是,甚至没有调用方法
NameChange
(我已经通过设置断点进行了测试)

我做错了什么?

您可以在页面上定义:

public partial class _Default : Page 
{
    [WebMethod]
    public static SomeObject GetObject()
    {
        SomeObject result = ... fetch from db or something
        return result;
    }
}
也可以使用类手动执行此操作:

您可以在页面上定义一个:

public partial class _Default : Page 
{
    [WebMethod]
    public static SomeObject GetObject()
    {
        SomeObject result = ... fetch from db or something
        return result;
    }
}
也可以使用类手动执行此操作:


非常感谢您的及时回复。我尝试了上面的代码,但有点失败。我有一种感觉,这是因为在请求URL时[在我的情况下,
http://localhost/Default.aspx/GetObject
]我只是将URL放在浏览器的URL栏中,这会导致它使用HTTP GET方法进行调用。我需要用POST来代替吗。因为,目前,我只是被重定向到默认页面。@user837610,yes页面方法只能通过POST请求访问。您不能使用GET请求(如
/Default.aspx/GetObject
)直接调用它们。您可以尝试第二种方法,或者编写一个自定义的泛型处理程序。我主要是从XHR对象本身使用它,所以GET请求不起作用并不是一个真正的问题。无论如何,非常感谢您的帮助:)请检查编辑好的问题,看看您是否可以帮助我。@user837610,您需要将正确的请求内容类型标题设置为
application/json
。看看我链接的使用jquery的示例:非常感谢您的及时回复。我尝试了上面的代码,但有点失败。我有一种感觉,这是因为在请求URL时[在我的情况下,
http://localhost/Default.aspx/GetObject
]我只是将URL放在浏览器的URL栏中,这会导致它使用HTTP GET方法进行调用。我需要用POST来代替吗。因为,目前,我只是被重定向到默认页面。@user837610,yes页面方法只能通过POST请求访问。您不能使用GET请求(如
/Default.aspx/GetObject
)直接调用它们。您可以尝试第二种方法,或者编写一个自定义的泛型处理程序。我主要是从XHR对象本身使用它,所以GET请求不起作用并不是一个真正的问题。无论如何,非常感谢您的帮助:)请检查编辑好的问题,看看您是否可以帮助我。@user837610,您需要将正确的请求内容类型标题设置为
application/json
。请看我链接的使用jquery的示例:
string jsonProperty = Request["JSonProperty"];//your result
if (!string.IsNullOrEmpty(jsonProperty))
{                    
    Response.Clear();
    Response.ContentType = "application/json";
    Response.Write(RenderJSon());

    Response.Flush();                    // Flush the data to browser
    Response.SuppressContent = true;     // Suppress further output - "standard" html-
                                         // content is not rendered after this

    return;
}