将数据发布到aspx页面并返回json对象

时间:2015-05-15 07:20:17

标签: c# jquery json

我试图从没有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();
            }
        }
}

2 个答案:

答案 0 :(得分:1)

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

filters.age_groups

因此,您的 var ser = new JavaScriptSerializer().Serialize(new { result = true, message = "Hello" }); 方法应如下所示:

Page_Load

我希望有所帮助。

答案 1 :(得分:-1)

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

以下代码演示了在ASP.NET环境中使用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);   

因此,尝试创建一个包含Questions的数组列表,然后将此列表序列化为JSON