使用C#asp.net打印json
好的,我有一些jQuery代码,它将向aspx文件发送一个AJAX请求 我的Spellchecker.aspx文件如下所示:使用C#asp.net打印json,c#,asp.net,ajax,json,themes,C#,Asp.net,Ajax,Json,Themes,好的,我有一些jQuery代码,它将向aspx文件发送一个AJAX请求 我的Spellchecker.aspx文件如下所示: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Spellchecker.aspx.cs" Inherits="Spellchecker" %> <head id="Head1" runat="server" /> 因此,在一个警报框中,我看到了json数据,然后是来回答您的实际问题
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Spellchecker.aspx.cs" Inherits="Spellchecker" %>
<head id="Head1" runat="server" />
因此,在一个警报框中,我看到了json数据,然后是来回答您的实际问题“为什么我需要head元素”-因为ASP.NET将您的CSS链接和一些JavaScript导入放在这里 现在还不清楚您到底想在这里做什么,但看起来您可能想创建一个Web服务或将一个方法公开为ScriptMethod。使用ASPX页面输出对AJAX请求的响应是很奇怪的 调查或调查 HttpHandler允许您完全管理响应。因此,您将创建一个处理程序,并将其挂接到“SpellChecker.ashx”,处理程序可以直接写入响应流
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);
}
}
然后,在system.webServer元素内的Web.Config中,添加:
<handlers>
<add name="SpellChecker" path="~/SpellChecker.ashx" type="MyNamespace.HttpHandlers.SpellCheckerHttpHandler, MyAssembly" />
</handlers>
现在您可以向处理程序发出请求,如
http://localhost/SpellChecker.ashx?TextToCheck=xyz/>代码> 如果您的所有页面都是处理输入和输出JSON,请考虑使用以ASHX结尾的“泛型处理程序”页,而不是以ASMX结尾的“Web页”。它没有太多的过头,不会尝试加载主题等
通过控制输出的内容类型,可以将其输出为JSON而不是XML或其他内容:
context.Response.ContentType = "application/json";
这两个选项看起来都太复杂,无法简单地输出一些json。回答:写的很好,为什么我不使用它?我不想仅仅为了让web服务运行就写30行。处理程序示例有点模糊,但我肯定要测试该方法。HttpHandler方法实际上非常简单。我将用一个简单的例子更新我的答案。是的,它似乎很有效。然而,我解决不了一个问题。当我在浏览器中键入url时,我得到了这个信息:{“id”:1,“json”:[5,10,15,20],“0”:“99”}(我的json数据),然而,出于某种原因,javascript将响应作为json对象抓取,json.length在javascript中是“未定义”的,但它可以访问json[0],并在警报框中返回99。有什么想法吗?或者我应该单独做一个主题,因为我们似乎在钻研javascript/jquery的怪癖。我会为JS问题单独做一个主题,因为它有点相关,但不是真的。很高兴我能帮忙。是的,我就是这么做的。现在我想我遇到了javascript问题,因为jquery认为返回的json对象是空的,但可以以某种方式访问其变量。
context.Response.ContentType = "application/json";