jquery多选择动态参数的使用以及ajax异步请求中提交整个form表单中serializeArray()的使用以及后台值得获取方式

来源:互联网 发布:中国心力衰竭数据平台 编辑:程序博客网 时间:2024/05/20 11:25

对于input单选按钮取值以及判断:

$(function(){             var fingerprint =${obj.data.fingerprint};             for (var key in fingerprint) {                     /* $("input[type=radio][name='"+key+"']").attr("checked",fingerprint[key]);  */                     if("input[type=radio][name='"+key+"']"){                         if(fingerprint[key]=="0"){                             $("input[type=radio][name='"+key+"'][value=0]").attr("checked",true);                         }else{                             $("input[type=radio][name='"+key+"'][value=1]").attr("checked",true);                         }                     }                    if(document.getElementById(key)!=null){                     document.getElementById(key).value=fingerprint[key];                     }                }          })

第一个问题是如何判断哪个按钮被选中了,做法就是在input按钮中加入value的值,是用0表示.否用1表示,

<input type="radio" name="r21" value="1">是</label><label><input type="radio" name="r21" value="0">否</label>

这样在用form表单取值的时候就可以得到0或者1的值了
然后用到了jquery的选择器

input[type=radio][name='"+key+"'][value=1]

这里是三个条件,input是radio类型,name属性,以及value值
name属性中的是key,是一个动态变量,因为radio按钮有很多,是循环显示的,key的值是input的name值,先得到是那个name的input,然后在判断数据库中的fingerprint[key]值是1还是0,然后判断,赋值,选中。

第二个问题是涉及到用ajax结合其方法serializeArray()的使用,serializeArray()时直接将form表单中的数据序列化成json对象,然后前台用dto接收
第一个错误是先前写的是

$('form').submit(function() {            $.ajax({                url:'${base}/userCompany/saveFingerprint',                type:'post',                data:{"name":$("#form").serializeArray()},                success:function(){                        alert("保存成功");                 },                error:function(result){                    //alert(result.responseText || '请求的操作出错了!');                }            });

这样写是得不到值得,先前传参数的时候是这样的{name:zhang,age:45}这里表示的只是一个input属性,而现在要传递的是整个form表单的数据,这里在把整个json对象写死是错误的,应该直接data:formData

争取的写法是这样的:

$('form').submit(function() {            var formData = $("#form").serializeArray();            $.ajax({                url:'${base}/userCompany/saveFingerprint',                type:'post',                data:formData,                success:function(){                        alert("保存成功");                 },                error:function(result){                    //alert(result.responseText || '请求的操作出错了!');                }            });            return false;        });

第二个错误是在接受这个form表单数据的时候,我按照接受单个参数的思维接受这个form表单中的数据,写

public Object saveFingerprint(@Param("fingerprintDto"") FingerprintDto fingerprintDto) 

fingerprintDto前在ajax中data中的名字,这样是不行的,无法直接接受整个json,所以要写成这样

public Object saveFingerprint(@Param(..)") FingerprintDto fingerprintDto) 

..表示的是通配符,表示我需要fingerprintDto中的什么数据,他就匹配什么数据,比如我需要name属性的值,就可以变成

@Param("name")") FingerprintDto fingerprintDto.getName

这样就可以获取整个fingerprintDto的值了

0 0