Ajax应用之表单提交

Ajax中提交表单,实际上是手动获取表单的数据,然后对数据进行封装,再通过异步请求对象提交到服务端的过程。

Ajax异步请求对象的创建(可参考http://blog.youkuaiyun.com/lixianlin/archive/2009/12/14/5001923.aspx),需要考虑一下浏览器兼容性,IE和非IE浏览器下创建方式不同。返回结果的处理,其实也就是异步请求对象的回调函数的构建。这两步操作只要明白了异步请求对象的工作原理,实现起来都不难,难的是如何获取表单的数据并对数据进行封装。

获取表单数据的思路:对表单中的所有元素(当然是能够提交数据的元素,不能提交数据的元素无须考虑)进行遍历,获取每个元素的name属性和value值,这其中就需要考虑怎样获取value值,比如象select元素,并不是所有option的value值都有效,只有被选中的option才是有效的,这个不用多说,因为select元素的作用就是那样的。

表单数据封装:换种方法说也说是编码,凡提到数据传输,必然会提到编码,因为只有编码和解码采用同一种机制(或者说协议),才能保证传输数据的正确性。正常情况下的表单提交,如GET方式,默认是采用“application/x-www-form-urlencoded“编码方式对数据封装的,得到的结果是以&连接的键值对的形式,其中的键和值需要进行编码处理,结果形如:key1=val1&key2=val2&key3=val3。可以用encodeURIComponent方法对键和值进行编码,也可以自定义编码方式,只要让服务器操作方便就行。

需要注意的事,对于file文件上传类型,是无法直接通过Ajax来处理的,因为在设计JS的时候,出于安全性考虑,网页中的JS被设计成不能访问文件的。网上所说的Ajax上传文件(严格意义上这种说法是不正确的),都是通过其他方式来上传文件的。

提供一个简单遍历表单数据的方法:

function GetRequestString(frm) { frm=$(frm); var e; var arr=[]; for(var i=0;i<frm.length;++i) { e=frm[i]; if(!e.name || e.disabled) { continue; } if(e.type=='select-one') { arr.push(encodeURIComponent(e.name)+'='+encodeURIComponent(e.options[e.selectedIndex].value)); } else if(e.type=='select-multiple') { for(var j=0;j<e.length;++j) { if(e.options[j].selected) { arr.push(encodeURIComponent(e.name)+'='+encodeURIComponent(e.options[j].value)); } } } else if(e.type=='checkbox' || e.type=='radio') { if(e.checked) { arr.push(encodeURIComponent(e.name)+'='+encodeURIComponent(e.value)); } } else if(typeof(e.value)!='undefined') { arr.push(encodeURIComponent(e.name)+'='+encodeURIComponent(e.value)); } } return arr.join('&'); }

参数为表单对象,或表单的id。

代码中用到的$()函数的定义:

function $(s) { if(typeof(s)=="string") { return document.getElementById(s); } else if(typeof(s)=="object") { return s; } else { return document; } }

基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)内容概要:本文介绍了基于粒子群优化算法(PSO)的p-Hub选址优化问题的研究与实现,重点利用Matlab进行算法编程和仿真。p-Hub选址是物流与交通网络中的关键问题,旨在通过确定最优的枢纽节点位置和非枢纽节点的分配方式,最小化网络总成本。文章详细阐述了粒子群算法的基本原理及其在解决组合优化问题中的适应性改进,结合p-Hub中转网络的特点构建数学模型,并通过Matlab代码实现算法流程,包括初始化、适应度计算、粒子更新与收敛判断等环节。同时可能涉及对算法参数设置、收敛性能及不同规模案例的仿真结果分析,以验证方法的有效性和鲁棒性。; 适合人群:具备一定Matlab编程基础和优化算法理论知识的高校研究生、科研人员及从事物流网络规划、交通系统设计等相关领域的工程技术人员。; 使用场景及目标:①解决物流、航空、通信等网络中的枢纽选址与路径优化问题;②学习并掌握粒子群算法在复杂组合优化问题中的建模与实现方法;③为相关科研项目或实际工程应用提供算法支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现逻辑,重点关注目标函数建模、粒子编码方式及约束处理策略,并尝试调整参数或拓展模型以加深对算法性能的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值