【问题标题】:AJAX Return Type from ASHX Handler来自 ASHX 处理程序的 AJAX 返回类型
【发布时间】:2012-08-15 18:13:52
【问题描述】:

我正在编写一个需要与 SQL 服务器交换一些信息的页面。出于可移植性的原因,并且因为我讨厌编写 ASP,但我被告知要在 IIS 7 服务器上执行此操作,所以我正在用纯 HTML 编写页面,使用 C# .NET 中的通用处理程序 (ASHX) 来执行服务器-边的东西,并使用AJAX在它们之间进行通信。我已经使用Response.ContentType = "text/plain"; 实现了这种方法,但我想通过一个请求返回多条信息,所以我切换到 XML 或 JSON,倾向于 XML。

所以,要返回 XML,我将更改为 "text/xml",但是我是否只是逐字记录整个 XML 代码 Response.Write,还是在 .NET 中内置了更简洁的方法? JSON的同样问题。我知道 jQuery(甚至只是 JavaScript)中有用于解析返回数据的特定方法,所以我想知道 .NET 中是否有类似的东西可以编码。

【问题讨论】:

  • 你应该使用 ASP.Net MVC。好多了。
  • Web API 在这里会很好用

标签: jquery asp.net .net html ajax


【解决方案1】:

但是我只是响应。逐字写入整个 XML 代码,或者是 .NET 中有更简洁的方法吗?

您可以使用XmlWriterXDocument 甚至XmlSerializer 来构建XML,然后将其写入Response.OutputStream

这是一个带有 XDocument 的示例:

public void ProcessRequest(HttpContext context)
{
    var doc = new XDocument(
        new XElement(
            "messages",
            new XElement(
                "message", 
                new XAttribute("id", "1"), 
                new XAttribute("value", "message 1"), 
            ),
            new XElement(
                "message", 
                new XAttribute("id", "2"), 
                new XAttribute("value", "message 2")
            )
        )
    );
    context.Response.ContentType = "text/xml";
    using (var writer = XmlWriter.Create(context.Response.OutputStream))
    {
        doc.WriteTo(writer);
    }
}

关于 JSON 的同样问题

您将使用 Json 序列化器,例如 JavaScriptSerializer,然后将其写入输出流:

public void ProcessRequest(HttpContext context)
{
    var serializer = new JavaScriptSerializer();
    string json = serializer.Serialize(new
    {
        messages = new[]
        {
            new { id = 1, value = "message 1" },
            new { id = 2, value = "message 2" },
        }
    });
    context.Response.ContentType = "application/json";
    context.Response.Write(json);
}

话虽如此,您应该知道ASP.NET MVC 或敲门Web API 现在是公开此类数据而不是编写通用处理程序的首选方式。

【讨论】:

  • 你能举个简单的例子吗?
  • 注意:使用您提供的 JSON 示例,我不得不说 messages = new object[]
  • 这很奇怪。您使用的是哪个版本的 .NET 框架?
  • 3.5 在首页上。我即将将其移至我们未弃用的服务器。也许这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多