使用from表单方式下载文件时数组对象格式如何传参

一、背景

  客户下载文件需要批量下载文件,之前的下载功能只支持下载同一个编号下的样品文件,后台接口参数为对象,{receivecode:code,sampleCode:samplecodes},当选择多个文件时,sampleCode需要将文件对应的样品编号逗号隔开传给后台。

  而客户的新需要需要能同时下载不同编号下的样品文件,后台接口参数为数组对象格式。

二、传参方式

  网上查了一下需要以下面这种方式传参

 <input type="text" name="param[0].id">
 <input type="text" name="param[0].name">
 <input type="text" name="param[1].id">
 <input type="text" name="param[1].name">
 <input type="text" name="param[2].id">
 <input type="text" name="param[2].name">

  但是如果客户需要下载十几二十个报告,就不能一个一个写了,调整了一下,具体代码如下:

function DownloadPDFReport() {
    var rows = $("#dgReportList").bootstrapTable('getSelections');
    if (rows.length == 0) {
        toastr.warning("请选择要下载的PDF!");
        return false;
    }
    var TaskSource = rows[0].TaskSource;
    var params= [];
    var flag = true;
    var AllowStatus = true;
    console.log(rows)
    $.each(rows, function (n, row) {
        params.push({ receivecode: row.Receivecode, sampleCode: row.SampleCode});
    });
var frm = $('<form action="url接口" method="post" id="fm1" target="_blank"></form>'); params.map(function (val, index) { for (var key_sub in val) { var input1 = $("<input>"); input1.attr("type", "hidden"); input1.attr("name", 'param[' + index + '].' + key_sub); input1.attr("value", val[key_sub]); frm.append(input1); } });
frm.appendTo(document.body).submit(); frm.remove(); }

调整后调试,后台可以正常接收到参数并且能正常下载文件。

 

三、另外将对象传参方式附上:

  1、当参数固定只有少数可以直接如下方式拼接:

    var frm = $('<form action="url接口" method="post" id="fm1" target="_blank"></form>');
    var con = $("<input type=\"text\" name=\"receiveCode\" value=\"" + receivecode + "\"><input type=\"text\" name=\"samplecodes\" value=\"" + result + "\"> ");

    con.appendTo(frm);
    frm.appendTo(document.body).submit();
    frm.remove();

  2、当下载文件参数有多个并且,参数可能随时增加(例如,根据查询条件将数据导出到excel文件时,客户会根据自己需要配置想要的查询条件)

  function Export(url) {
      var flag = true;
      var frm = $('<form action="' + url + '" method="post" id="frmExport" target="_blank"></form>');
      var Index = 0, AllIndex = 0;

      var _param = GetParams();
      for (var item in _param) {
          AllIndex++
if (!_param[item]) { Index++ } frm.append("<input type=\"hidden\" name=\"" + item + "\" value=\"" + _param[item] + "\" />"); } if (AllIndex == Index) { toastr.warning("至少选择一个查询条件!"); return; } frm.appendTo(document.body).submit(); $("#frmExport").remove(); }

 

posted @ 2026-01-07 14:51  敲键盘的喵~  阅读(1)  评论(0)    收藏  举报