Asp.net Json 客戶端与服务端传递

这两天在做一个WEB的项目,很久没有做WEB项目了,再回来做WEB项目,感觉有很多新鲜感。

此次实现的功能为,前台通过Jquery提供的Ajax方法读取後台数据,後台将对象序列化为Json字符串返回给前台,

前台用Json2.js提供的方法将对象序列化为Json字符串返回给後台,後台都通过Json.net转换为对象;

前台Ajax代码:

 1 var obj;
 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;
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提交对象到後台:

 

function SaveToOrder() {
        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);
            }
        });
    }

 

台後接收提交的信息,并处理:

 

[WebMethod]
    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>

PS:如不添加,肯定不能运行,运行後,获取的数据,一定要使用“.d”去获取返回的数据,否则为整页的HTML数据

关於“.d”使用方法:

success function(data){

var result = data.d;

 

在上面里使用了 :

jquery-1.6.min.js 此文件可以在JQUERY的网站上下载;

json2.js              此文件可以在Json的网站上下载;

Newtonsoft.Json.dll 此文件可以在Json的网站上下载,并放在WEB程序的BIN目录下!引用空间命名Newtonsoft.Json;

 

 

posted on 2011-11-09 14:41  BadTree  阅读(5060)  评论(0编辑  收藏  举报