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();
}
}
}
编码正确。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