使用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="似乎会禁用主题!
要回答您的实际问题"为什么我需要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";