引子:
在Asp.net mvc 框架下用Ajax方法提交一个复杂的Json 对象到Action方法上, 会出现一些问题,这里我们用Javascript 的方式去解决这个问题,在asp.net mvc 3.0 后可以使用JsonValueProviderFactory解决这个问题,但在这里我们给出用纯js解决这个问题的方案,在mvc 2.0的老系统也可以使用这种方法。
需要提交一个复杂对象如以下对象结构:
1 {
2 hotelName:’abc’,
3 hotelAddress:’ 北京海淀路72号’,
4 Rooms:[ {roomName:’标准间’,roomPrice:720},
5 {roomName:豪华间,roomPrice:1020}],
6 HotelStar:4
7 }
8 //这时我们必需转换成如下格式才能正确提交到后台Action的对象上。
9
10
11 {
12 hotelName:’abc’,
13 hotelAddress:’ 北京海淀路72号’,
14 Rooms[0]: {roomName:’标准间’,roomPrice:720},
15 Rooms[1]: {roomName:豪华间,roomPrice:1020},
16 HotelStar:4
17 }
18 //格式转换代码:
19
20 var Convert={
21 _jsonFlat:function (data, parentPro, returnObj) {
22 if (data instanceof Object) {
23 for (varpro in data) {
24 try{
25 varproValue = eval("data." +pro.toString());
26 if(proValue instanceof Array) {
27 for (var i = 0; i 28 if (parentPro){ 29 Convert._jsonFlat(proValue[i], parentPro + "." + pro + "["+ i + "]", returnObj); 30 } 31 else 32 Convert._jsonFlat(proValue[i], pro + "[" + i + "]",returnObj); 33 } 34 continue; 35 } 36 if(proValue instanceof Object) { 37 if(parentPro) 38 Convert._jsonFlat(proValue, parentPro + "."+ pro, returnObj); 39 else 40 Convert._jsonFlat(proValue, pro, returnObj); 41 42 continue; 43 } 44 if(parentPro) 45 returnObj[parentPro + "." + pro] = proValue; 46 else 47 returnObj[pro] =proValue; 48 49 } 50 catch(e) { }; 51 } 52 return; 53 } 54 //otherwiselike string/int/datetime format 55 returnObj[parentPro] = data; 56 },jsonFlat: function(data) { 57 //debugger; 58 if(data && data instanceof Object) { 59 varretObj = {}; 60 Convert._jsonFlat(data, null, retObj); 61 returnretObj; 62 } 63 return null; 64 }, 65 } 解释:以上代码就是完成Json对象格式的转换,只有通过转换后的复杂Json对象才能提交到后台的Action 方法上。JsonFloat方法运用递归遍历json对象上的所有属性进行扁平化转换。 调用例子 view sourceprint? 1 $.ajax({ 2 url: "controller/action", 3 data:Convert.jsonFlat({/*your json data*/}), 4 success: function(){ 5 $(this).addClass("done"); 6 } 7 }); 在3.0以后Mvc已经内置注册了JsonValueProviderFactory, 然后就可以直接这样调用ajax方法而不需要用js进行扁平化了: 但是这里需要注意的是contentType 必需设置成application/json. view sourceprint? $.ajax({ url: "controller/action", data:{/*your json data*/}, contentType: "application/json", success: function(){ $(this).addClass("done"); } });

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。 1.Python以简洁语法和丰富库生态着称,适用于数据分析和Web开发。 2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安装,因为它已内置于现代浏览器中。你只需文本编辑器和浏览器即可开始使用。1)在浏览器环境中,通过标签嵌入HTML文件中运行。2)在Node.js环境中,下载并安装Node.js后,通过命令行运行JavaScript文件。

如何在Quartz中提前发送任务通知在使用Quartz定时器进行任务调度时,任务的执行时间是由cron表达式设定的。现�...

在JavaScript中如何获取原型链上函数的参数在JavaScript编程中,理解和操作原型链上的函数参数是常见且重要的任�...

在微信小程序web-view中使用Vue.js动态style位移失效的原因分析在使用Vue.js...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver CS6
视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具