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

首頁 > 開發 > AJAX > 正文

asp.net中mvc使用ajax提交參數的匹配問題解決探討

2024-09-01 08:29:02
字體:
來源:轉載
供稿:網友
想到在asp.net的mvc中如果使用ajax向服務端傳遞參數時如果參數是一個類或者是個數組(或List集合)以及更復雜的對象時,服務端總是會發生取不到值的情況,當然網上也有很多解決的例子,但都是在服務端想辦法來解決的(比如將json轉換為字符串,再在服務端反序列化為一個對象),為何不能在客戶端就把這個問題搞定。

其實問題沒那么復雜,那是因為在jquery提交Array的數據時,提交的時候始終會在名稱后面加上”[]”, 問題就出在這里。另外在服務端對數組和內嵌的js對象進行解析時,需要像這樣的格式,比如數組(或List集合)在服務端需要這樣{'xxx[0]':'aaa','xxx[1]':'bbb'}的格式,而內嵌對象需要像這樣{'xxx.a':'ddd','xxx.b':'hhh'},找到問題的原因就好解決了,如果我們能將json的格式轉換為服務端了能夠識別的格式,問題豈不迎刃而解。

說干就干,直接上代碼
代碼如下:
//用于MVC參數適配JavaScript閉包函數
/*
使用方式如下:
$.ajax({
url: "@Url.Action("AjaxTest")",
data: mvcParamMatch("", sendData),//在此轉換json格式,用于mvc參數提交
dataType: "json",
type: "post",
success:function(result) {
alert(result.Message);
}
});
*/
var mvcParamMatch = (function () {
var MvcParameterAdaptive = {};
//驗證是否為數組
MvcParameterAdaptive.isArray = Function.isArray || function (o) {
return typeof o === "object" &&
Object.prototype.toString.call(o) === "[object Array]";
};
//將數組轉換為對象
MvcParameterAdaptive.convertArrayToObject = function (/*數組名*/arrName, /*待轉換的數組*/array, /*轉換后存放的對象,不用輸入*/saveOjb) {
var obj = saveOjb || {};
function func(name, arr) {
for (var i in arr) {
if (!MvcParameterAdaptive.isArray(arr[i]) && typeof arr[i] === "object") {
for (var j in arr[i]) {
if (MvcParameterAdaptive.isArray(arr[i][j])) {
func(name + "[" + i + "]." + j, arr[i][j]);
} else if (typeof arr[i][j] === "object") {
MvcParameterAdaptive.convertObject(name + "[" + i + "]." + j + ".", arr[i][j], obj);
} else {
obj[name + "[" + i + "]." + j] = arr[i][j];
}
}
} else {
obj[name + "[" + i + "]"] = arr[i];
}
}
}
func(arrName, array);
return obj;
};
//轉換對象
MvcParameterAdaptive.convertObject = function (/*對象名*/objName,/*待轉換的對象*/turnObj, /*轉換后存放的對象,不用輸入*/saveOjb) {
var obj = saveOjb || {};
function func(name, tobj) {
for (var i in tobj) {
if (MvcParameterAdaptive.isArray(tobj[i])) {
MvcParameterAdaptive.convertArrayToObject(i, tobj[i], obj);
} else if (typeof tobj[i] === "object") {
func(name + i + ".", tobj[i]);
} else {
obj[name + i] = tobj[i];
}
}
}
func(objName, turnObj);
return obj;
};
return function (json, arrName) {
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂阳县| 乌恰县| 卓尼县| 玉龙| 福州市| 平乡县| 榆社县| 浦东新区| 布尔津县| 海口市| 庆元县| 托克逊县| 广汉市| 灵武市| 扎囊县| 泽普县| 都安| 梨树县| 清苑县| 巴青县| 商城县| 永春县| 富源县| 洞口县| 芜湖县| 公安县| 武乡县| 石屏县| 凤庆县| 遂昌县| 来凤县| 德江县| 北安市| 岑溪市| 台江县| 云和县| 汝南县| 南陵县| 梁平县| 吕梁市| 梁山县|