【JavaScript】前端用 js form上传对象数组

Jquery get 数组

1. 起因:为了导出文件,使用 form 格式

使用 form 上传参数,下载文件,就会出现 obj 对象在参数里显示为 [object object] 或者 object

2. 解决方案

<input type="text" name="username" aciton="..">
     <input type="text" name="photo[0].id">
     <input type="text" name="photo[0].name">
     <input type="text" name="photo[1].id">
     <input type="text" name="photo[1].name">
     <input type="text" name="photo[2].id">
     <input type="text" name="photo[2].name">

当前端没有页面时,使用

var form = $("<form>");
form.attr("style", "display:none");
form.attr("target", "");
form.attr("method", "get");
form.attr("action", "url" );
$("body").append(form);
form.submit();

来模拟生成一个 form 表单进行提交;
其中参数使用:

for(var key in params) {
    var input1 = $("<input>");
    // 用于屏蔽对象
    // if(typeof params[key] == 'object') break;
    input1.attr("type", "hidden");
    input1.attr("name", key);
    // input1.attr("value", typeof regionAndTimeParams[key] == "object" ? JSON.stringify(regionAndTimeParams[key]) : regionAndTimeParams[key]);
    input1.attr("value", temp[key]);
    form.append(input1);
}

针对 对象数组 的提交,使用

var temp = {};
if(typeof params[key] == 'object' ) {
    // 此处处理的是 对象数组,对象比较简单
    params.map(function (val, index) {
        for(var key_sub in val) {
            temp[ key + '[' + index + '].' + key_sub] = val[key_sub];
        }
    })
    // 不影响原来的 params
    $.extend(temp, params);
}

据此,完成全部的替换,达到与前端写定 form 的一样效果。

补充 - JavaScript 中获取对象名

在 js 中,获取一个 obj 的对象名

// domain 为 obj 所在的域。可为全局,也可以为某个对象
function getObjName(obj, domain){
  // obj 绑定在 全局时适用
  var domain = domain || (typeof global == 'undefined' ? window : global);
  for(let name in domain){
    if(domain[name] === obj){
      return name;
    }
  }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值