jquery ajax,ashx,json的用法介紹

來源:互聯網
上載者:User

 本篇文章主要是對jquery ajax,ashx,json的用法進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所協助

jquery提供的簡化版的ajax調用方法通常如下:  代碼如下:    function post() {     $("#divWait").show();     $("#btnPost").attr("disabled", "disabled");     $.post("../PostIt.ashx",                     {                         msgContent: $("#msgContent").val()                     },                     function (data) {                         if (data.indexOf('OK') > -1) {                             alert(data);                         }                         else {                             }                         $("#divWait").hide();                         $("#btnPost").attr("disabled", "");                     }); }  在開發的時候,要接受json格式的傳回值時,上面的方法貌似不能行,上面的方法貌似接受的是text的文本行。因此,採用jQuery的底層Ajax實現方法。 該方法參數也很多,具體可看協助文檔。本人的常規用法  代碼如下:    function doPostAjax(){             $("#divWait").show();             $("#btnPost").attr("disabled", "disabled");             $.ajax({                 url: '../PostIt.ashx',                 type: 'POST',                 dataType: 'json',                 data: { msgContent: $("#msgContent").val() },                 timeout: 60000,                 error: function (XMLHttpRequest, textStatus, errorThrown) {//請求錯誤 時執行的方法                     alert("error!" + errorThrown);                     $("#divWait").hide();                     $("#btnPost").attr("disabled", "");                 },                 success: function (data, txtSataus) {//請求成功時執行的方法                     showContent(data.content, data.createdate);                     $("#divWait").hide();                     $("#btnPost").attr("disabled", "");                 }                 });         }  在ashx程式碼片段,要設定好返回的格式。 context.Response.ContentType = "application/json"; 如果是返回的html或者text的話可以如下寫法 context.Response.ContentType = "text/plain"; 如果ajax方法中設定的傳回值是json時,ashx代碼返回的格式必須是json格式的資料。把一個對象轉換成json格式,常用方法就是採用開源的第三方類庫json.net,Newtonsoft.Json.dll. JsonConvert.SerializeObject方法就可以轉換了。返回json格式後,jquery就可以採用XXX.xxx的方式擷取值了。 JsonConvert在處理datetime格式的時候,會返回類似1198908717056的絕對值,因此,在處理datetime的時候,要做一下轉換。具體語句如下: IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();           //這裡使用自訂日期格式,如果不使用的話,預設是ISO8601格式            timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"; string output = JsonConvert.SerializeObject(m, Newtonsoft.Json.Formatting.Indented, timeConverter); 此處順便提一下,javascript對json格式的資料有著天生的處理能力,非常好的相容json格式資料。 舉個例子:  代碼如下:    function pppp() {            var person = { "name": "jack", "age": 24,"sex": true };            alert(person.name);            alert(person.age);            alert(person.sex);            } 這樣的代碼可以直接寫出來,在vs2010的代碼編輯器中還可以有代碼提示。很強大。 ashx完整代碼如下: 代碼如下:using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Threading; using Newtonsoft.Json; using Newtonsoft.Json.Converters;     namespace nnn{     /// <summary>     /// PostIt 的摘要說明     /// </summary>     public class PostIt : IHttpHandler     {             public void ProcessRequest(HttpContext context)         {             context.Response.ContentType = "application/json";             try             {                 string msgContent = context.Request["msgContent"] ?? "";                 ModelContent m = new ModelContent()                 {                     author = "",                     categoryid = -1,                     title = "",                     content = msgContent,                     datetime = DateTime.Now,                     key = "",                     createdate = DateTime.Now,                     lastmodifydate = DateTime.Now,                     ip = context.Request.UserHostAddress                     };                     //BLLContent bll = new BLLContent();                 //bll.Add(m);                     IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();                          //這裡使用自訂日期格式,如果不使用的話,預設是ISO8601格式                           timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";                 string output = JsonConvert.SerializeObject(m, Newtonsoft.Json.Formatting.Indented, timeConverter);                 context.Response.Write(output);             }             catch (Exception ex)             {                 context.Response.Write(ex.Message);             }             }             public bool IsReusable         {             get             {                 return false;             }         }     } } 
相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。