创建一个使用ASP .net返回JSON格式数据的简单页面

时间:2011-07-10 13:15:11

标签: c# asp.net

我是ASP新手。我想创建一个ASP页面,它将根据请求返回JSON格式的数据。我遵循了一些教程,现在我可以看到的是一个完整的页面链接,我的代码中有回调。所以从本质上讲,服务器输出了很多HTML,这显然是无效的JSON。所以我唯一的问题是如何制作这样的网页。我希望我的应用程序能够设计为当我进入网页时,说http://localhost:8080(或类似的东西),我的C#代码中的回调或函数连接到数据库,收集一些信息并将其发回作为有效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甚至没有被调用(我通过设置断点来测试它)。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您可以在页面上定义PageMethod

public partial class _Default : Page 
{
    [WebMethod]
    public static SomeObject GetObject()
    {
        SomeObject result = ... fetch from db or something
        return result;
    }
}

或者您也可以使用JavaScriptSerializer类手动执行此操作:

public partial class _Default : Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Clear();
        Response.ContentType = "application/json";
        SomeObject result = ... fetch from db or something
        var serializer = new JavaScriptSerializer();
        string json = serializer.Serialize(result);
        Response.Write(json);
    }
}

答案 1 :(得分:1)

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;
}