Asp.net Json 客戶端与服务端传递
这两天在做一个WEB的项目,很久没有做WEB项目了,再回来做WEB项目,感觉有很多新鲜感。
此次实现的功能为,前台通过Jquery提供的Ajax方法读取後台数据,後台将对象序列化为Json字符串返回给前台,
前台用Json2.js提供的方法将对象序列化为Json字符串返回给後台,後台都通过Json.net转换为对象;
前台Ajax代码:
2 function GetObject() {
3 $.ajax({
4 type: "POST",
5 url: "Test.aspx/GetObject",
6 contentType: "application/json; charset=utf-8",
7 data: "{'name':'" + $("#TB_Name").val() + "'}",
8 dataType: 'json',
9 success: function(data) {
10 obj = jQuery.parseJSON(data.d);
11 if (obj == null) { alert("未能查找到此單號對應的資料"); }
12 },
13 error: function(jqXHR, textStatus, errorThrown) {
14 alert(textStatus + " " + errorThrown);
15 }
16 });
17 }
後台Test.aspx的GetObject方法:
using System.Collections.Generic;
using System.Web.Services;
using Newtonsoft.Json;
public partial class Form_Test : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
}
[WebMethod]
public static string GetObject( string name)
{
// 通过参数获取对象
TestObject obj = new TestObject(name);
return JsonConvert.SerializeObject(obj);
}
}
前台通过Ajax提交对象到後台:
obj.Name = $( " #TB_Name ").val();
$.ajax({
type: " POST ",
url: " Test.aspx/SaveObject ",
contentType: " application/json; charset=utf-8 ",
data: " {'objString':' " + JSON.stringify(obj) + " '} ",
dataType: ' json ',
success: function(data) {
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + " " + errorThrown);
}
});
}
台後接收提交的信息,并处理:
public static bool SaveObject( string objString)
{
try
{
TestObject obj = JsonConvert.DeserializeObject<TestObject >(objString);
}
catch (Exception ex) { return false }
return true;
}
在使用.net 2.0的时候,使用Jquery提共的Ajax必需要在web.config的<system.web></system.web>标签里添加
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
如不添加,肯定不能运行,运行後,获取的数据,一定要合用“.d”去获取返回的数据,否则为整页的HTML数据
在上面里使用了 :
jquery-1.6.min.js 此文件可以在JQUERY的网站上下载;
json2.js 此文件可以在Json的网站上下载;
Newtonsoft.Json.dll 此文件可以在Json的网站上下载,并放在WEB程序的BIN目录下!引用空间命名Newtonsoft.Json;