日期:2014-05-18  浏览次数:20528 次

怎么在.net后台中获取jquery传递的json
var invoiceID= "123"//单个值
var editVal = {1,2,3,4,5};//数组
   
var sendData = { "invoiceID": invoiceID, "editVal": editVal };
jQuery.ajax({
  url: "Application/upDate_invoice_base.aspx",
  data: sendData,
  cache: false,
  type: "post",
  beforeSend: function() {
  $("#divMask").ShowMask("showMessage", "messageContent", "childBody");
  },
  success: function() {
  $("#divMask").closeBg("showMessage");
  }
  });

这个服务端的接受
ID = this.Request.Form["invoiceID"]
数组却接受不到,我不想把数组转换为字符串
知道可以用xml或者json序列化后获取,
但是网上资料过少,希望高人给点实例看看

------解决方案--------------------
$(function(){
var jsonText = "jsonstr={'user':[{'username':'A','password':'123' },{'username':'B','password':'456' }]}";
$.ajax({
type:"POST",
data:jsonText,
url:"search.action",
contentType:"application/json"
});
}); 
string jsonstr=Request.Form["jsonstr"];
SerializeObject(object value, params JsonConverter[] converters),序列化,它有个重载方法SerializeObject(object value)
DeserializeObject(string value, Type type),反序列化,它有个重载方法DeserializeObject(string value)
------解决方案--------------------
下载Newtonsoft.Json.dll

序列反序列类
C# code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Json;
using Newtonsoft.Json;
using System.ServiceModel.Web;

namespace UtityClass
{
    public class ExtJson<T>
    {
        public static T ReadJosn(string strValue)
        {
            System.IO.MemoryStream Memory = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(strValue));
            DataContractJsonSerializer dataJson = new DataContractJsonSerializer(typeof(T));
            return (T)dataJson.ReadObject(Memory);
        }
        public static string WriteJson(T strValue)
        {
            DataContractJsonSerializer dataJson = new DataContractJsonSerializer(typeof(T));
            System.IO.MemoryStream Menory = new System.IO.MemoryStream();
            dataJson.WriteObject(Menory, strValue);
            byte[] jsonByte = new byte[Menory.Length];
            Menory.Position = 0L;//[0] int32--[0L] int64
            Menory.Read(jsonByte, 0, (int)Menory.Length);
            return System.Text.Encoding.UTF8.GetString(jsonByte);
        }

    }
}