国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
asp.net的ajax以及json

來(lái)現(xiàn)在這家公司以前,從未接觸過(guò)webform,以前在學(xué)校做的項(xiàng)目是php,java以及asp.net mvc的,當(dāng)時(shí)asp.net mvc用的是razor引擎,所以,一直與aspx.cs/aspx無(wú)緣,也聽(tīng)說(shuō)過(guò)微軟硬生生地把無(wú)狀態(tài)連接改變?yōu)椤坝袪顟B(tài)連接”的霸氣之舉,并且一舉取得成功,如今,用上了,覺(jué)得,webform并不像前輩們講得那樣差,就如同c++并不像人們覺(jué)得那么落后一樣。


 


好了,開(kāi)頭就先說(shuō)到這里,這里面就記錄一下我對(duì)json.net的試用以及如何在aspx.cs文件中接收ajax,多數(shù)人用一般處理程序接收,即ashx文件。用一般處理程序的方法是正統(tǒng)的,因?yàn)槿绻胊spx.cs(即pager)接收的話,你多數(shù)將處理方法寫(xiě)在onload中,而之前創(chuàng)建頁(yè)面控件樹(shù)、初始化頁(yè)面、處理viewstate、處理ProecessPostData都需要做,而這些于我們ajax而言是無(wú)用功,并且它們還會(huì)向我們的Response中插入一些數(shù)據(jù),所以當(dāng)我們?cè)趏nload中處理完ajax要返回?cái)?shù)據(jù)的時(shí)候,不得不Response.Clear()來(lái)清空,然后Response.Write()寫(xiě)入我們的數(shù)據(jù),最后再用Response.End()來(lái)阻止頁(yè)面生存周期的后序操作(它們會(huì)對(duì)Response進(jìn)行好多處理并加入數(shù)據(jù))。


 


這是從asp.net的運(yùn)行機(jī)制上來(lái)講的,我們應(yīng)該用一般處理程序,但是,當(dāng)我們只需要偶爾使用一ajax,時(shí)不時(shí)的用一下,而并非項(xiàng)目經(jīng)理在宏觀上給我們制地使用位置的時(shí)候,我們?yōu)榱俗约旱姆奖?,隨手就新建一個(gè)ashx文件,是非常不明智的,而且對(duì)于svn來(lái)說(shuō),控制起來(lái)后患無(wú)窮,所以,我努力地找尋使用aspx.cs接收ajax的最方便的方法,并且將它的劣勢(shì)換為它的優(yōu)勢(shì)。


 


首先:aspx.cs中處理ajax,正是因?yàn)関iewstate被處理了,而且request對(duì)象也被正常生成了,你可以取得頁(yè)面上所有控件的當(dāng)前值,并不需要通過(guò)ajax的data傳過(guò)來(lái),想來(lái)用過(guò)ajax的人,對(duì)構(gòu)造data數(shù)據(jù)都非常的頭疼,少則幾百個(gè)字符,多則上千個(gè)字符,而且涉及到引號(hào)的問(wèn)題,單雙要求靈活使用,好不容易構(gòu)造完了,發(fā)現(xiàn)自己已經(jīng)吐血了,日后自己再敢不想看這一段代碼了。通過(guò)這種方式,我們可以將整個(gè)頁(yè)面的服務(wù)器控件數(shù)據(jù)回傳,并且不引發(fā)頁(yè)面刷新,然后我們可以收到我們想要的數(shù)據(jù),再通過(guò)js進(jìn)行局部刷新或控制,這一切都是那么完美。


 


下在來(lái)看一下一個(gè)精短的用例:


前臺(tái):



 1 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  %> 2 ..... 3 <script type="text/javascript"> 4  5         function setPerson() { 6             $.ajax({ 7                 url: "default.aspx?ajax=setPerson", 8                 type: "POST", 9                 dataType: "JSON",10                 data: '{"name":"' + $("#name").val() + '","sex":"' + $("#sex").val() + '","birth":"' + $("#birth").val() + '","age":' + $("#age").val() + '}',11                 sucess: function (data) {12                 }13             });14         }15         function getPerson() {16             $.ajax({17                 url: "default.aspx?ajax=getPerson",18                 type: "POST",19                 dataType: "JSON",20                 success: function (data) {21                     datar = data;22                     $("#name").val(data.name);23                     $("#sex").val(data.sex);24                     $("#birth").val(data.birth);25                     $("#age").val(data.age);26                 }27             });28         }29 </script>


后臺(tái)的關(guān)鍵代碼:



 1 public partial class _Default : System.Web.UI.Page  2 { 3     protected void Page_Load(object sender, EventArgs e) 4     { 5         Person p1 = new Person(); 6         p1.name = "zjq"; 7         p1.age = 14; 8         p1.sex = "man"; 9         p1.birth = DateTime.Now.AddDays(-1213);10         lover l=new lover();11         l.name="htt";12         l.sex="nv";13         l.age=14;14         l.birth = DateTime.Now.AddDays(-1222);15         p1.lover = l;16         string jsonstr = JsonConvert.SerializeObject(p1);17         if (Request.QueryString["ajax"] != null)18         {19             string method=Request.QueryString["ajax"].ToString().Trim().ToLower();20             if (method == "add")21             {22                 string n3 = Server.UrlDecode((new System.IO.StreamReader(Request.InputStream)).ReadToEnd());23                 Response.Write("{data:{"+n3+",result:'s'}");24 25                 Response.End();26             }27             else if (method == "savejson")28             {29                 Person p = JsonConvert.DeserializeObject<Person>(new StreamReader(Request.InputStream).ReadToEnd());30                 int i = 1;31 32             }33             else if (method == "getperson")34             {35                 Response.Clear();36                 Response.Write(jsonstr);37                 Response.End();38             }39             else if (method == "setperson")40             {41                 Person p = JsonConvert.DeserializeObject<Person>(new StreamReader(Request.InputStream).ReadToEnd());42                 string name = p.name;43                 Response.Clear();44                 Response.End();45             }46         }47     }48 }


 


用到的實(shí)體對(duì)象:



 1 public class Person:Object 2 { 3     public Person() 4     { 5         // 6         // TODO: 在此處添加構(gòu)造函數(shù)邏輯 7         // 8     } 9     public string name { set; get; }10     public int age { get; set; }11     public string sex { get; set; }12     public lover lover { get; set; }13     public DateTime? birth { get; set; }14 }15 public class lover16 {17     public string name { get; set; }18     public string sex { get; set; }19     public int age { get; set; }20     public DateTime? birth { get; set; }21 }


 


測(cè)試的內(nèi)容:(重點(diǎn)在于對(duì)json中的非字符串格式、json.net的使用方法的試用)


object對(duì)象:



通過(guò)JsonConvert.SerializeObject(p1)轉(zhuǎn)換出的string【json對(duì)象】為:

"{\"name\":\"zjq\",\"age\":14,\"sex\":\"man\",\"lover\":{\"name\":\"htt\",\"sex\":\"nv\",\"age\":14,\"birth\":\"2010-05-10T15:56:45.9389376+08:00\"},\"birth\":\"2010-05-19T15:56:43.515799+08:00\"}"












分析:

  1. 整個(gè)json都在“”包圍中,并以{}開(kāi)始結(jié)尾。

  2. 屬性與值都用“”括起來(lái),值為對(duì)象以及數(shù)字的時(shí)候則不用。

  3. 日期被直接轉(zhuǎn)換成字符串的日期了,日期與時(shí)間用T格開(kāi),時(shí)間后面+時(shí)區(qū)


將數(shù)據(jù)轉(zhuǎn)到前臺(tái),顯示,然后不做處理,直接傳回后臺(tái),內(nèi)容為:{"name":"zjq","sex":"man","birth":"2010-05-19T16:46:54.9250418 08:00","age":14},后臺(tái)用:JsonConvert.DeserializeObject<Person>(string)轉(zhuǎn)出的Person對(duì)象為:













分析:

  1. 日期已經(jīng)被正常轉(zhuǎn)換。

  2. 沒(méi)回傳的數(shù)據(jù)默認(rèn)為null。

  3. 數(shù)字直接被轉(zhuǎn)換。



其它情況:

    關(guān)于時(shí)間的測(cè)試:

























前臺(tái)的時(shí)間后臺(tái)接收后反序列化后的對(duì)象中的時(shí)間




結(jié)論:

前臺(tái)傳來(lái)的日期沒(méi)有太高要求,但是必須放在“”中,作為字符串。


 


差不多就這么些了,還有好多沒(méi)時(shí)間寫(xiě),有空再寫(xiě),小弟菜鳥(niǎo)一枚,大神們輕噴~~

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
$.ajax json數(shù)據(jù)傳遞方法
dojo - 方法解析
django
ExtJs 備忘錄(4)—— Form表單(四) [ 數(shù)據(jù)提交 ]
JQuery Ajax調(diào)用asp.net后臺(tái)方法
Ajax調(diào)用asp.net后臺(tái)代碼
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服