基于jQuery的ajax功能實(shí)現(xiàn)web service的json轉(zhuǎn)化
不過(guò)這篇文章的題目我真不知道該怎么起,如果你因?yàn)檫@個(gè)差勁的題目錯(cuò)過(guò)這個(gè)東西,那真的很可惜。
我在做這個(gè)東西之前參考了不少文章:
http://www.roseindia.net/tutorials/json/parse-message-JSON-JS.shtml
http://funkatron.com/site/comments/safely-parsing-json-in-javascript/
http://docs.jquery.com/Ajax/jQuery.getJSON
http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/
http://encosia.com/2009/04/07/using-complex-types-to-make-calling-services-less-complex/
第一步需要做的是如何在Server端把一個(gè)datatable轉(zhuǎn)壞為自己需要的那種格式:
本來(lái)想使用.net的javascriptSerializer來(lái)完成的(結(jié)合Genirics庫(kù)的List等),但是后來(lái)發(fā)現(xiàn)使用NewtonSoft.Json更加靈活,而且擴(kuò)展性比較好,甚至在網(wǎng)上有找到一些代碼能夠現(xiàn)成使用。
先看看我在Server端如何實(shí)現(xiàn)了Data轉(zhuǎn)化:
這里不僅能夠轉(zhuǎn)換Datatable還有DataSet,以后再擴(kuò)展JavascriptSerializer的轉(zhuǎn)換功能。需要注意的是轉(zhuǎn)化的最終結(jié)果需要是個(gè)[]包著的一段字符串.開(kāi)始我試著使用{}來(lái)最終返回json為對(duì)象,結(jié)果在客戶(hù)端真的是沒(méi)有頭緒根本就無(wú)法轉(zhuǎn)換。最后看到一篇文章介紹,在.net 3.5中你的web Services返回來(lái)的結(jié)果會(huì)自動(dòng)打包成一個(gè)json對(duì)象,且名字為d,如:{“d”:***}.所以我只有在服務(wù)器端的生成一個(gè)array形式的包。
然后我創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)表,內(nèi)容如下:
,
定義的web方法如下:
Serializer方法已經(jīng)在DNA_JSON中打包好。它是在NewtonSoft.Json的基礎(chǔ)轉(zhuǎn)換類(lèi)基礎(chǔ)上擴(kuò)展的。
第二步是客戶(hù)端的東西:
首先我們需要用到幾個(gè)js, jQuery.js, json2.js就OK了。
上面圖所示我們用到了jQuery的ajax和JSON。Parse()轉(zhuǎn)換函數(shù)。
還有需要注意的是res.d它是.net 3.5默認(rèn)為你打包好的json的屬性。如果你使用framework2.0就沒(méi)有這個(gè)問(wèn)題了。
最后是看看如何把這些ojbect組成的array顯示在一個(gè)table中,代碼如下:
<script type="text/javascript"><!--
function BuildTable(msg) {
if ($('#tblResult').length != 0) // remove table if it exists
{$("#tblResult").remove();}
var table = '<table class="table.display"><thead> <tr><th>First Name</th> <th>Last Name</th><th>Email</th></thead> <tbody>';
for (var i=0;i<=msg.length-1;i++) {
var row = '<tr>';
row += '<td>' + msg[i].UserName+ '</td>';
row += '<td>' +msg[i].FirstName+ '</td>';
row += '<td>' + msg[i].email + '</td>';
row += '</tr>';
table += row;
}
table += '</tbody></table>';
$('#example1').html(table);
}
// --></script>
如果還有需要源代碼的請(qǐng)留言。接下來(lái)我會(huì)試著去使用這個(gè)方法把一些jQuery的ajax插件介紹給大家,然后把一些datagrid的插件封裝成asp.net控件,這樣你就不需要使用微軟那笨重的datagrid了。
相關(guān)文章
jquery改變disabled的boolean狀態(tài)的三種方法
改變disabled的boolean狀態(tài),下面為大家介紹三種比較不錯(cuò)的方法,大家可以參考下2013-12-12jquery中object對(duì)象循環(huán)遍歷的方法
這篇文章主要介紹了jquery中object對(duì)象循環(huán)遍歷的方法,感興趣的小伙伴們可以參考一下2015-12-12十個(gè)迅速提升JQuery性能讓你的JQuery跑得更快
jQuery正在成為Web開(kāi)發(fā)人員首選的JavaScript庫(kù),作為Web開(kāi)發(fā)者,除了要了解語(yǔ)言和框架的應(yīng)用技巧外如何提升語(yǔ)言的性能,本文提供即刻提升你的腳本性能的十個(gè)步驟 簡(jiǎn)單的幾步讓你的JQuery跑得更快 需要的朋友可以參考下2012-12-12基于jQuery.validate及Bootstrap的tooltip開(kāi)發(fā)氣泡樣式的表單校驗(yàn)組件思路詳解
這篇文章主要介紹了基于jQuery.validate及Bootstrap的tooltip開(kāi)發(fā)氣泡樣式的表單校驗(yàn)組件的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-07-07js過(guò)濾HTML標(biāo)簽以及空格的思路及代碼
今天要做一個(gè)應(yīng)用--判斷編輯器中文字的個(gè)數(shù)。如果少如20個(gè)字就不能讓其提交。沒(méi)多想,正好周末的時(shí)候看了一下js中正則表達(dá)式的內(nèi)容。很容易就想到了要用正則表達(dá)式來(lái)解決這個(gè)問(wèn)題。雖說(shuō)看了正則表達(dá)式的內(nèi)容是看了,但是畢竟還是剛接接觸,連基本的概念都很模糊,于是只好在網(wǎng)上找到如下的代碼:2013-05-05原生js和jquery實(shí)現(xiàn)圖片輪播特效
本文給大家分享的是使用原生JS和JQ兩種方法分別實(shí)現(xiàn)相同的圖片輪播特效,十分的實(shí)用,也非常方便大家對(duì)比學(xué)習(xí)原生js和jQuery,有需要的小伙伴可以參考下。2015-04-04jquery validate.js表單驗(yàn)證的基本用法入門(mén)
jquery.validate.js是jquery下的一個(gè)驗(yàn)證插件,功能比較強(qiáng)大,早就有所耳聞但是一只沒(méi)有動(dòng)手用過(guò),現(xiàn)在在于能夠研究一下了。2010-05-05