前台和后台數據傳遞綜合總結


1.前台將Json字符串數據傳遞到后台進行處理

//var Json = '{"User":[{"UserName":"a","PassWord":"a"},{"UserName":"b","PassWord":"b"}]}';這是前台
            string json = Request.Form["Json"];
            JObject o = (JObject)JsonConvert.DeserializeObject(json);
            JToken arr = (JToken)o["User"];//此地返回的是多條記錄,所以要遍歷
            foreach (var token in arr)
            {
                Person p = JsonConvert.DeserializeObject<Person>(token.ToString());
                //在此對p進行增刪改操作,p已經是一個實體類的實例
            }
            Response.End();

對Json字符串進行后台處理,需要應用到程序集Newtonsoft.Json.dll

另外:如果是一條記錄的Json,處理方式是:

//var Json = '{"UserName":"c","PassWord":"c"}';這是前台
            string json = Request.Form["Json"];
            JObject o = (JObject)JsonConvert.DeserializeObject(json);
            JToken arr = (JToken)o;//此地返回的是一條記錄,不進行選項選擇都是一條,不用遍歷
            Person p = JsonConvert.DeserializeObject<Person>(arr.ToString());
            //在此對p進行增刪改操作,p已經是一個實體類的實例
            Response.End();

 2.組織對象,然后轉換為Json字符串

var opts = {
                    UserName: "d",
                    PassWord:"d"
                };
                var json = jsonParseString(opts);

 方法jsonParseString 代碼如下

//JSON對象轉字符串
function jsonParseString(o) {
    try {
        if (o == undefined) { return ""; }
        var r = [];
        if (typeof o == "string") return "\"" + o.replace(/([\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
        if (typeof o == "object") {
            if (!o.sort) {
                for (var i in o)
                    r.push("\"" + i + "\":" + jsonParseString(o[i]));
                if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
                    r.push("toString:" + o.toString.toString());
                }
                r = "{" + r.join() + "}"
            } else {
                for (var l = 0; l < o.length; l++)
                    r.push(jsonParseString(o[l]))
                r = "[" + r.join() + "]";
            }
            return r;
        }
        return o.toString().replace(/\"\:/g, '":""');
    } catch (e) { return e.Message; }
}

 最終生成的json字符串為:var Json = '{"UserName":"d","PassWord":"d"}',滿足傳遞到后台的需求

3.前台直接傳遞到自己的后台,添加Response.End();可以防止傳遞HTML到前台

4.后台將數據轉換為Json傳遞到前台

這是后台代碼:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form["Type"] == "GetJson")
        {
            Person p = new Person();
            p.UserName = "e";
            p.PassWord = "e";
            string json = JsonConvert.SerializeObject(p);//此處將對象轉換為Json了
            Response.Write(json);
            Response.End();
        }
    }

注意還可以將對象集合轉換為Json,實例代碼:

            List<Person> persons = new List<Person>();
            Person p = new Person();
            p.UserName = "f";
            p.PassWord = "f";
            persons.Add(p);
            persons.Add(p);
            string json = JsonConvert.SerializeObject(persons);//此處將對象轉換為Json了 內容為 "[{\"UserName\":\"f\",\"PassWord\":\"f\"},{\"UserName\":\"f\",\"PassWord\":\"f\"}]"
            Response.Write(json);
            Response.End();

同時他還可以將DataTable轉換為Json字符串,實例代碼如下:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form["Type"] == "GetJson")
        {
            DataTable dt = ZXGA.Utility.DbHelperOleDb.Query(App_Init.ConnStr(),"select * from jjdwb").Tables[0];
            string json = JsonConvert.SerializeObject(dt);
            Response.Write(json);
            Response.End();
        }
    }

 

下面是前台代碼:

                $.post("test2.aspx", { Type: "GetJson" }, function (data) {
                    //var obj = $.parseJSON(data);//方法一
                    var obj = eval('(' + data + ')'); //方法二
                    alert(obj.UserName);
                });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM