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

对于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的值了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值