ajax异步获取表单,异步获取并提交表单数据

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

1、编码乱码问题

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

2、获取表单字段数据

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

Copy to Clipboard

e2bccdbad7bc28f4ef2a8fa52a21e480.gif引用的内容:[www.veryhuo.com]

data: encodeURI(Y.io._serialize({

id: '#formId',

useDisabled: true

}))

即使用了一个龌龊的私有方法,看上去确还算完美。假如字段的 name 属性中没有“[]”等特殊符号,一般情况下都是没问题的。

这个 _serialize 方法的原理很简单,通过获取节点内 input,select 和 textarea 等字段,然后根据 name 遍历并取值即可。

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

Copy to Clipboard

e2bccdbad7bc28f4ef2a8fa52a21e480.gif引用的内容:[www.veryhuo.com]

var parameters = [], nodeList;

nodeList.each(function (v) {

parameters.push(v.get('name') + '=' + Y.Lang.trim(v.get('value')));

});

parameters = parameters.join('&');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值