asp.net中使用json前后台传值
来源:互联网 发布:mac版文明5汉化 编辑:程序博客网 时间:2024/05/17 11:32
使用input控件onclick传递json比较简单,
使用asp:Button 服务器控件onclick会回发刷新页面使json的值丢失。
在Handler1.ashx中使用静态变量存储当两个人同时操作的时候会出现问题,如果您有好的解决办法,希望能于大家分享。
以下代码大多来源于网上,在此感谢作者。
//前台
<script src="JS/json2.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function doJSON() {
createXMLHttpRequest();
var car = getCarObject();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("get", "Handler1.ashx?ts=" + new Date().getTime() + "&jsonStr=" + JSON.stringify(car), true);
xmlHttp.setRequestHeader("content-type", "application/x-www-form-urlencode");
xmlHttp.send(null);
}
function getCarObject()
{
return new Car("Dodge","Coronet R/T",1968,"yellow");
}
function Car(make,model,year,color)
{
this.Make=make;
this.Model=model;
this.Year=year;
this.Color=color;
}
function handleStateChange()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
parseResults();
}
}
}
function parseResults(){
var responseDiv = document.getElementById("serverResponse");
if(responseDiv.hasChildNodes())
{
responseDiv.removeChild(responseDiv.childNodes[0]);
}
var responseText = document.createTextNode(xmlHttp.responseText);
responseDiv.appendChild(responseText);
}
</script>
<body>
<form id="form1" runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</cc1:ToolkitScriptManager>
<div>
<input type="button" value="Click here to send JSON data to the server" onclick="doJSON();" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" OnClientClick="doJSON();" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
//Handler1.ashx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using Newtonsoft.Json;
namespace JSonDemo
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string carJson = context.Request.Params["jsonStr"];
// 可以通过,但在客户端的JSON.parse()处报:语法错误
//JSonDemo._Default.Car car = (JSonDemo._Default.Car)JavaScriptConvert.DeserializeObject(carJson, typeof(JSonDemo._Default.Car));
//string responseStr = JavaScriptConvert.SerializeObject(car);
// 不能通过,报错:该字符串未被识别为有效的 DateTime。
//Serializer s = new Serializer(typeof(Car));
//Car car = (Car)s.Deserialize(carJson);
//string responseStr = s.Serialize(car);
//context.Response.Write(responseStr);
MyProperty = carJson;
}
public bool IsReusable
{
get
{
return false;
}
}
public static string MyProperty { get; set; }
}
}
//后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model;
using System.IO;
using System.Text;
using Newtonsoft.Json;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
namespace JSonDemo
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[DataContract]
[Serializable]
public class Car
{
public Car()
{ }
private string make;
[DataMember]
public string Make
{
get { return make; }
set { make = value; }
}
private string model;
[DataMember]
public string Model
{
get { return model; }
set { model = value; }
}
private int year;
[DataMember]
public int Year
{
get { return year; }
set { year = value; }
}
private string color;
[DataMember]
public string Color
{
get { return color; }
set { color = value; }
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string adfadfas = Handler1.MyProperty;
//string sJson = "{/"Make/":/"Dodge/",/"Model/":/"Coronet R/T/",/"Year/":1968,/"Color/":/"yellow/"}";
Car car = new Car();
Type type = car.GetType();
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(car.GetType());
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(adfadfas));
car = serializer.ReadObject(ms) as Car;
string Makes = car.Make;
}
}
}
- asp.net中使用json前后台传值
- 在ASP.NET中使用JSON
- 在ASP.NET中使用JSON
- 在ASP.NET中使用JSON
- 在ASP.NET中使用JSON
- 在asp.net mvc中使用json
- 在ASP.NET中使用JSON
- asp、net使用json
- asp.net 使用json
- What is JSON:在ASP.NET中使用JSON
- What is JSON:在ASP.NET中使用JSON
- ASP.NET前后台交互之JSON数据
- asp.net后台cs中的JSON格式变量在前台Js中调用方法!(前后台实例!)
- json前后台使用
- asp.net 中 Json、Jquery、Post简单使用
- 在asp.net web form项目中使用json
- Asp.Net中使用Newtonsoft.Json转换,读取,写入
- 在asp.net web form项目中使用json
- VB---Cstr和str/lable和test问题
- Eclipse 无法启动 JVM terminated. Exit code=-1
- 波兰总统
- php删除文件
- 浅谈网站推广提高谷歌PR值
- asp.net中使用json前后台传值
- js中Map之基本用法
- snmp简单网络管理协议
- PHP程序和MySql数据乱码问题原因及解决
- 取石子游戏
- 人生感悟之11条大彻大悟
- 经典的生成树学习资料
- Rownum和row_number() over()的使用
- SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL