国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > AJAX > 正文

基于Ajax表單提交及后臺處理簡單的應(yīng)用

2024-09-01 08:27:41
字體:
供稿:網(wǎng)友

首先先說下表單提交吧,要提交表單那么就得先收集表單數(shù)據(jù)(至于驗證這個我就不說了,要說留下下次吧),有了jquery取個html的值還是簡單$("xxid").val()等就完了,但如果一張表單收集的數(shù)據(jù)很多,像這樣的表單又有很多張,那用此方法肯定麻煩死,并且容易眼花錄錯。所以,我們就可以簡單的來定義一個收集規(guī)則,如在要回傳到服務(wù)器的數(shù)據(jù)表單控件,可以做個標(biāo)記,到時取的時候把這些標(biāo)記的數(shù)據(jù)一起取回去。

 就拿最簡單的文體輸入做例子吧<input type="text" id="txtcode" name="txtcode" datafield="Code" style="width: 200px" />我們加一個"datafield"屬性,存入的值為對應(yīng)服務(wù)器相關(guān)類的屬性名。有了這標(biāo)記前臺取數(shù)據(jù)就好辦了。

我們可以定個通用方法如下面代碼

getFormData: function(formid) {        var data = {};    //獲取TEXT文件內(nèi)容    $("#" + formid + " input[type=text]").each(function(i, o) {      var jo = $(o);      if (jo.attr("datafield")) {        var str = jo.val();        str = str.replace(" ", "");        if (str !== "") {                    data[jo.attr("datafield")] = jo.val();        }      }    });    return data;}

這里就是一個簡單的獲取表單里面所有text文本,并放入到一個data對象里面,至于其它表單控件值怎么取我就不多說了,原理差不多。

那么接下回就是把數(shù)據(jù)發(fā)到服務(wù)器上了,我這里就直接用jquery帶的ajax。

var save = function(sender) {           $(sender).prop("disabled", true); //禁用按鈕,防止重復(fù)發(fā)送      var data = getFormData("form1");      var jsonobj = { jsondata: data };      var textdata = JSON.stringify(jsonobj);      $.ajax({        type: "POST",        contentType: "application/json; charset=utf-8",        url: "xxxxx.aspx/Save",        dataType: "json",        data: textdata,        success: function(msg) {          if (msg.d == "1") {            document.form1.reset();            alert("保存成功!");                     }          else if (msg.d == "0") {            alert("保存失敗!");          }        },        complete: function(jqXHR, textStatus) {          $(sender).prop("disabled", false); //還原按鈕        }      });    }

這里的"xxxxx.aspx/Save"就是ajax處理頁面,其它就是一個webmethod。做了一下防止客戶手速太快,服務(wù)處理太慢,重復(fù)點擊的處理。

這樣一個表單數(shù)據(jù)收集,回傳服務(wù)器就完成了。這里使用json2.js的JSON.stringify方法統(tǒng)一將對象轉(zhuǎn)成json字符,好處就是不用自己為拼json字符串而考慮json的格式問題,簡單干凈。

那么客戶已經(jīng)把數(shù)據(jù)收錄好了,服務(wù)器也該要處理數(shù)據(jù)了。我們從前臺來的數(shù)據(jù)的鍵(json的key),不可能全部包括某個數(shù)據(jù)類的所有屬性。并且數(shù)據(jù)類也有很多個,應(yīng)該是哪一個類只有服務(wù)器才知道。所以這里我們就需要寫一個幫助的轉(zhuǎn)換類。這里又有問題,有可能數(shù)據(jù)類有很多個,難道我要為每一個類寫一個方法,那不是個坑么?所以我們分析下客戶端傳到服務(wù)端上的數(shù)據(jù)格式,它是一組鍵值對且不會重復(fù),那么就相當(dāng)于一個Dictionary<string, string>,后臺的類有很多種,那么至少我們能確定一個傳入?yún)?shù)了,傳出的就是相關(guān)類。相關(guān)類?到底是哪一類還只有到了具體后臺收集方法里才知道。那么,整理一下思路,現(xiàn)在有一個Dictionary<string, string>要變成一個數(shù)據(jù)類,數(shù)據(jù)類到底是什么有什么樣的屬性?搞不清,但這個Dictionary<string, string>的key(鍵)可以看做是這個數(shù)據(jù)類屬性集的一個子集,而這個Dictionary<string, string>的value(值)是這個數(shù)據(jù)類屬性值toString()的子集。那樣這樣就好辦了。屬性集怎么取?反射。這么多類到底是哪個?不管它,泛型解決。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桦南县| 古交市| 淳安县| 望江县| 谷城县| 儋州市| 云梦县| 紫阳县| 祁阳县| 神池县| 监利县| 徐汇区| 蕉岭县| 子洲县| 河北省| 台东县| 张掖市| 云霄县| 神池县| 天柱县| 上栗县| 陆丰市| 江川县| 集贤县| 黔西县| 莲花县| 江西省| 义马市| 高邮市| 铁岭市| 盖州市| 积石山| 广丰县| 芮城县| 垫江县| 辽阳县| 即墨市| 常州市| 随州市| 金秀| 浙江省|