您的位置:首页 > Web前端 > JavaScript

javascript, json, xml

2010-01-16 16:02 204 查看
【转自】http://www.cnblogs.com/chenxizhang/archive/2010/01/13/1646255.html

 

在网络编程中,我们经常需要用到javascript,这些客户端脚本又经常需要与服务端进行异步的通讯,提交并接收数据。下面这个例子演示了如何设计服务,如何编写脚本

1. 服务端,这是一个ashx文件

需要添加两个引用 System.Runtime.Serialization和System.ServiceModel.Web

using System.Web;
using System.Web.Services;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.IO;
using System.Text;

namespace DynamicTableSample
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Test : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
//解析客户端传过来的数据
var c = context.Request["data"];
var ser = new DataContractJsonSerializer(typeof(Customer));
Customer customer =ser.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(c))) as Customer;//反序列化,将字符串转换为对象

//返回结果
ActionResult result = new ActionResult() { ResultCode = 200, Message = "该操作已经成功" };
var ser2 = new DataContractSerializer(typeof(ActionResult));
//直接返回xml格式的内容。返回xml其实是更好的,因为这个服务才更有通用性。
ser2.WriteObject(context.Response.OutputStream, result);
}

public bool IsReusable
{
get
{
return false;
}
}
}

public class Customer {

public string CustomerID { get; set; }
public Employee[] Employees { get; set; }
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
}

public class ActionResult
{
public int ResultCode { get; set; }
public string Message { get; set; }
}

}

2. 客户端

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestJson.aspx.cs" Inherits="DynamicTableSample.TestJson" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

<script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
<script src="json2.js" type="text/javascript"></script>

<script type="text/javascript">
function Test() {
var arr = new Array();
var o = new Object();
o.Id = 1;
o.Name = "chenxizhang";
arr.push(o);
arr.push(o);
arr.push(o);

var customer = new Object();
customer.CustomerID = "Microsoft";
customer.Employees = arr;

$("#msg").html(JSON.stringify(customer));

$.post("Test.ashx", "data=" + JSON.stringify(customer), function(result) {
alert($(result).find("Message").text());//这里可以解析xml
});

$.ajax({
type: "post",
data: "data=" + JSON.stringify(customer),
url: "Test.ashx",
success: function(result) {
alert(result);//这是返回xml
}
});

//var o = JSON.parse('{"Name":"chenxizhang"}');
//alert(o.Name);
}
</script>

</head>
<body>
<form id="form1" runat="server">
<div id="msg">

</div>
</form>

<input type="button" value="测试" onclick="Test()" />
</body>
</html>



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐