当前位置: 首页 > 面试题库 >

如何以标准的Web窗体.Net返回JSON对象

宣煜
2023-03-14
问题内容

目的是调用一个执行该操作的方法,然后返回一个JSON对象。

我是JSON的新手。

我有一个default.aspx,并在其中下面的代码。现在,我希望Default.aspx.cs中的普通方法在此处的click事件上运行。

$(".day").click(function (event) {
var day = $(event.currentTarget).attr('id');
if (day != "") {
    $.ajax(
    {
        type: "POST",
        async: true,
        url: 'Default.aspx?day=' + day,
        data: day,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            console.log("SUCCESS:" + msg);
            //  $(".stripp img").attr('src', "data:image/jpg;" + msg);
            //  $(".stripp").show();
        },
        error: function (msg) {
            console.log("error:" + msg);
        }
    });
}

});

Default.aspx.cs类似于以下内容:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["day"] != null)
            GetFile(Request.QueryString["day"]);
    }
    public string GetFile(string day)
    {
        string json = "";
        byte[] bytes = getByteArray();

        json = JsonConvert.SerializeObject(bytes);
        return json;
    }

我在哪里错了?我应该以某种方式使用它还是仅适用于Web服务?

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

问题答案:

我建议一个HttpHandler。没有页面生命周期(因此速度非常快),更清晰的代码分离以及可重用性。

将一个新项添加到您的类型为“通用处理程序”的项目中。这将创建一个新的.ashx文件。实现的任何类的主要方法IHttpHandlerProcessRequest。因此,要使用原始问题中的代码:

public void ProcessRequest (HttpContext context) {

    if(String.IsNullOrEmpty(context.Request["day"]))
    {
        context.Response.End(); 
    }

    string json = "";
    byte[] bytes = getByteArray();

    json = JsonConvert.SerializeObject(bytes);
    context.Response.ContentType = "text/json";
    context.Response.Write(json);
}

更改您的AJAX调用中的网址,应该这样做。JavaScript如下所示,其中 GetFileHandler.ashx
是您刚创建的IHttpHandler的名称:

$.ajax(
    {
        type: "POST",
        async: true,
        url: 'Handlers/GetFileHandler.ashx',
        data: "Day=" + $.toJSON(day),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            console.log("SUCCESS:" + msg);
        },
        error: function (msg) {
            console.log("error:" + msg);
        }
    });

还有一点需要考虑,如果您需要从Handler代码本身内部访问Session对象,请确保从IRequiresSessionState接口继承:

public class GetFileHandler : IHttpHandler, IRequiresSessionState


 类似资料:
  • 我有这个密码 我将答案转换为json,但无法转换,因为开头的答案是,额外字符请参见示例 响应标头 HTTP/1.1 200 OK缓存控制:私有内容长度:232内容类型:应用程序/json;charset=utf-8服务器:Microsoft IIS/7.5 X-AspNet-Version:2.0.50727 X-Powered-By:ASP。NET访问控制允许来源:*访问控制允许方法:PUT、O

  • 问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于:

  • 我是新来表达,目前如果我想发送一个回应,我会这样做 对于我所有的控制器函数,我会这样做。我想这是一种压倒性的,所以我在想是否有可能制作一个广义版本的响应。 所以经过一些搜索,我发现有两种方法可以实现这一点: 我找到了这个答案。这很清楚,但我认为这是浪费时间,我的控制器不够可读,我必须在每个控制器函数中做以下事情 这是非常有希望的,但不幸的是,经过这么多次尝试和遵循express docs,我无法让

  • 我刚刚使用创建了一个新项目。我的Google-foo可能会让我失望,但我没有找到与我的答案相关的任何内容(如果我错过了一些明显的东西,请链接到另一个SO答案或相关文档)。 如果我想确保此新项目符合 .NET 标准 2.0,我现在该怎么办?

  • 问题内容: 如何从Java Servlet返回JSON对象。 以前,当使用servlet执行AJAX时,我返回了一个字符串。是否有需要使用的JSON对象类型,或者你只是返回了一个看起来像JSON对象的String,例如 问题答案: 我完全按照你的建议去做(返回a )。 不过,你可能会考虑将MIME类型设置为指示你正在返回JSON(根据其他stackoverflow文章,其为“ applicatio

  • 问题内容: 我正在使用.Net framework 2.0 / jQuery对2.0 Web服务进行Ajax调用。无论我在ajax调用中将contentType设置为什么,该服务始终返回XML。我希望它返回Json! 这里是电话: 这是Fiddler中请求标头的样子: 我尝试将contentType设置为’text / json’并获得相同的结果。 这是Web服务方法: 这是它返回的内容: 有人知