使用c# asp.net打印json

本文关键字:打印 json net asp 使用 | 更新日期: 2023-09-27 17:52:42

好了,我有一些jQuery代码,将AJAX请求发送到aspx文件。

我的跟前。Aspx文件看起来像这样:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Spellchecker.aspx.cs" Inherits="Spellchecker" %>
<head id="Head1" runat="server" />

我必须把这个"头"标签,否则我得到一个错误关于"<网页主题"在web。配置文件(我需要在网站的其他页面)。这意味着来自服务器的响应以以下形式出现:<JSON HERE><head…/>这是错误的,因为代码应该只返回json数据。

在aspx.cs文件中,我在Page_Load中返回一个转换为json的字典:

dict.Add("just_json", json_obj);
JavaScriptSerializer serializer = new JavaScriptSerializer(); //creating serializer instance of JavaScriptSerializer class
string json = serializer.Serialize((object)dict);
Response.Write(json);
}

所以在一个警告框中,我看到json数据,后面跟着<head id="Head1"><link href…"样式表等

我怎样才能使它只有JSON数据从aspx返回?

更新:我想我弄明白了。在aspx文件的"% Page"标签中添加Theme="似乎会禁用主题!

使用c# asp.net打印json

要回答您的实际问题"为什么我需要head元素"-因为这是ASP。. NET将你的CSS链接和一些JavaScript导入。

不清楚你在这里想做什么,但看起来你可能想要创建一个Web服务或公开一个方法作为ScriptMethod。使用ASPX页面输出对AJAX请求的响应是很奇怪的。

查看ScriptMethods或HttpHandlers

HttpHandlers允许你完全管理响应。因此,您将创建一个处理程序并将其挂钩到"SpellChecker"。而处理程序可以直接写入响应流。

public class SpellCheckerHttpHandler : IHttpHandler
{
    public bool IsReusable { get { return true; } }
    public void ProcessRequest(HttpContext context)
    {
        //Write out the JSON you want to return.
        string json = GetTheJson();
        context.Response.ContentType = "application/json";
        context.Response.Write(json);
    }
}

然后,在您的Web。在系统内部配置。webServer元素,添加:

<handlers>
    <add name="SpellChecker" path="~/SpellChecker.ashx" type="MyNamespace.HttpHandlers.SpellCheckerHttpHandler, MyAssembly" />
</handlers>

现在您可以向处理程序发出请求,如http://localhost/SpellChecker.ashx?TextToCheck=xyz

如果您的页面正在处理输入和输出JSON,请考虑使用以ashx结尾的"Generic Handler"页面,而不是以asmx结尾的"Web page "页面。它有更少的头部,不会尝试加载主题等。

你可以通过控制输出的Content-Type让它输出JSON而不是XML或其他东西:

context.Response.ContentType = "application/json";