Post数据到aspx页面并返回json对象

本文关键字:返回 json 对象 数据 aspx Post | 更新日期: 2023-09-27 17:49:24

我试图从没有WebMethod的页面获取数据值,并试图响应json对象。我该怎么做呢?

<script type="text/javascript">
        function foo() {
            $.ajax({
                type: "POST",
                url: 'foo.aspx?CalendarUC=Update',
                data: "{ 'x': '5', 'y': '6'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                beforeSend: function () {
                },
                success: function (data) {
                    console.log(data);
                }
            });
        }
</script>
<a href="#" onclick="foo()">click</a>
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Params["CalendarUC"] != null)
        {
            if (Request.Params["CalendarUC"] == "Update")
            {
                var x = Request.Params["x"];
                var y = Request.Params["y"];
                //do stuff
                Response.Clear();
                Response.ContentType = "application/json";
                Response.Write(new {result = true, message = "Hello" });
                Response.End();
            }
        }
}

Post数据到aspx页面并返回json对象

编码正确。ajax部分是正确的。
c#部分也做得很好,但您只是忘记了像这样序列化返回对象:

      var ser = new JavaScriptSerializer().Serialize(new { result = true, message = "Hello" });

那么你的Page_Load方法应该是这样的:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["CalendarUC"] != null && Request["CalendarUC"] == "Update")
        {
            var x = Request["x"];
            var y = Request["y"];
            //do stuff
            var ser = new JavaScriptSerializer().Serialize(new { result = true, message = "Hello" });
            Response.Clear();
            Response.ContentType = "application/json";
            Response.Write(ser);               
            Response.End();
        }
    }
}

要将任何对象或对象列表转换为JSON,我们必须使用JsonConvert.SerializeObject函数。

下面的代码演示了在ASP中使用JSON。网络环境:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Newtonsoft.Json;
using System.Collections.Generic;
namespace JSONFromCS
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e1)
        {
            List<Employee> eList = new List<Employee>();
            Employee e = new Employee();
            e.Name = "Minal";
            e.Age = 24;
            eList.Add(e);
            e = new Employee();
            e.Name = "Santosh";
            e.Age = 24;
            eList.Add(e);
            string ans = JsonConvert.SerializeObject(eList, Formatting.Indented);
            string script = "var employeeList = {'"Employee'": " + ans+"};";
            script += "for(i = 0;i<employeeList.Employee.length;i++)";
            script += "{";
            script += "alert ('Name : ='+employeeList.Employee[i].Name+' 
            Age : = '+employeeList.Employee[i].Age);";
            script += "}";
            ClientScriptManager cs = Page.ClientScript;
            cs.RegisterStartupScript(Page.GetType(), "JSON", script, true);
        }
    }
    public class Employee
    {
        public string Name;
        public int Age;
    }
}  

运行此程序后,您将得到两个警告

在上面的例子中,我们创建了一个Employee对象列表,并将其传递给函数"JsonConvert.SerializeObject"。这个函数(JSON库)将对象列表转换为JSON格式。JSON的实际格式可以在下面的代码片段中查看:

{ "Maths" : [ {"Name"     : "Minal",        // First element
                             "Marks"     : 84,
                             "age"       : 23 },
                             {
                             "Name"      : "Santosh",    // Second element
                             "Marks"     : 91,
                             "age"       : 24 }
                           ],                       
              "Science" :  [ 
                             {
                             "Name"      : "Sahoo",     // First Element
                             "Marks"     : 74,
                             "age"       : 27 }, 
                             {                           
                             "Name"      : "Santosh",    // Second Element
                             "Marks"     : 78,
                             "age"       : 41 }
                           ] 
            } 

语法:

{} -作为'容器'

[] -保存数组

: -名称和值以冒号

分隔

, -数组元素之间用逗号分隔

这段代码是为中级程序员准备的,他们想用c# 2.0来创建JSON并在ASPX页面中使用。

你可以从JavaScript端创建JSON,但是如何从c#将对象列表转换为等效的JSON字符串呢?这就是我写这篇文章的原因。

在c# 3.5中,有一个名为JavaScriptSerializer的内置类用于创建JSON。

下面的代码演示了如何在c# 3.5中使用该类转换为JSON。

JavaScriptSerializer serializer = new JavaScriptSerializer()
return serializer.Serialize(YOURLIST);   

那么,尝试创建一个带有问题的数组列表然后将该列表序列化为JSON