- 注册时间
- 2013-2-23
- 最后登录
- 2019-1-12
- 阅读权限
- 10
- 积分
- 415
- 精华
- 0
- 帖子
- 66
|
本帖最后由 veryfine 于 2013-3-19 11:48 编辑
niko 发表于 2013-3-14 16:32
给你一个例子,能满足你的要求:注意要下载最新版,刚更新的。
jquery里ajax有一个参数traditional,是可以有选择性地防止ajax调用$.param对传入的json数据进行深度序列化。
默认traditional=false,即要为迎合各种新的开发框架(如:struts2等)对于传递参数的要求作深度序列化,如传递的JSON参数为:data: {"xxx": [1, 2]},序列化后的参数为:xxx[]=1&xxx[]=2,若将traditional=true,同样的JSON参数序列化后的参数为:xxx=1&xxx=2,前者适用于目前各类开发框架下获取参数(你给出的例子也是为目前流程框架所准备的数据格式),而后者适用于用传统的开发方式获取参数(如:servlet的request.getParameterValues),而刚好目前我使用的是自己开发的一个基于servlet进行了轻度封装的开发框架(主要是觉得目前各种流行的开发框架越来越复杂,开发效率也得不到实质的提升,学习的成本也高,高级功能我们多半也用不上),而这样的情况下,对于如果要传递同名的控件参数,在程序后台直接将参数值获取成一个数组,就会有问题。目前我的方式是如下:
// 将附件列表附上
var attach_id = new Array();
$("#editform input[name=attach_id]").each(function(i) {
attach_id.push(this.value);
});
gridCharge.loading("保存中,请稍后......");
$.ajax({
url: "store_oa_cush_WholesalerChargeSave",
dataType: 'json',
cache: false,
type: 'POST',
data: {"data": mini.encode(data), "attach_id": attach_id},
traditional: true,
success: function (text) {
gridCharge.reload();
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
综上所述,目前对于参数的处理方式没有什么大问题,我只是希望miniui能够兼容原始的参数传递方式,不要丢弃。既然jquery也保留了traditional这个开关,我们miniui是否也应该在form.getData()时考虑这样的问题。 |
|