国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > web前端 > jscript > 异步获取并提交表单数据

异步获取并提交表单数据

来源:程序员人生   发布时间:2013-12-10 20:44:44 阅读次数:2770次

异步提交表单数据最痛苦的两个破事:

1、编码乱码问题

事实上 ajax 技术底层是 unicode 编码,当 GBK 的页面与接口进行数据交互时,会产生乱码情况。解决方案有多种,可以将页面转化为 utf-8 编码,或者发送数据前进行两次 encodeURI 编码,在接受数据时进行一次解码。

2、获取表单字段数据

拿 YUI3 来说,其实原生的 io-form 模块已经做了很好的封装。其中有个叫做 _serialize 的私有方法,可以对异步提交表单的行为进行预先编码:

data: encodeURI(Y.io._serialize({
id: '#formId',
useDisabled: true
}))

即使用了一个龌龊的私有方法,看上去确还算完美。假如字段的 name 属性中没有“[]”等特殊符号,一般情况下都是没问题的。
这个 _serialize 方法的原理很简单,通过获取节点内 input,select 和 textarea 等字段,然后根据 name 遍历并取值即可。

一个简单的代码案例(YUI3):

var parameters = [], nodeList;
nodeList.each(function (v) {
parameters.push(v.get('name') + '=' + Y.Lang.trim(v.get('value')));
});
parameters = parameters.join('&');
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
为码而活
积分:4237
15粉丝
7关注
栏目热点
关闭
程序员人生