• 前端导出下载分别发送get和post请求的写法


    1,发送get请求

    *export({ payload }, { put }) {
          yield put({
            type: 'updateState',
            payload: { ...payload, selectedRows: [], loading: true },
          });
          window.location.href = `${Config.merc_down_file_url}?MERC_ID=${payload.MERC_ID === undefined ? null : payload.MERC_ID}&MERC_NM=${payload.MERC_NM === undefined ? null : payload.MERC_NM}`;
        },

    但是这种写法有个缺点,就是参数过多的时候会请求失败

    2,post请求

    *export({ payload }, { put }) { 
      yield put({
        type: 'updateState',
        payload: { ...payload, selectedRows: [], loading: true },
      });
      let params = {};
      params.MERC_ID=payload.MERC_ID === undefined ? null : payload.MERC_ID;
      params.MERC_NM=payload.MERC_NM === undefined ? null : payload.MERC_NM;
      // 创建form元素
      var temp_form = document.createElement("form");
      // 设置form属性
      temp_form .action = Config.merc_down_file_url;      
      temp_form .target = "_self";
      temp_form .method = "post";      
      temp_form .style.display = "none";
      // temp_form.enctype = "application/json";
      // 处理需要传递的参数 
      for (var x in params) { 
          var opt = document.createElement("textarea");      
          opt.name = x;      
          opt.value = params[x];      
          temp_form .appendChild(opt);      
      }
      document.body.appendChild(temp_form);
      // 提交表单      
      temp_form.submit();     
    } 

    这种写法有个问题,如果设置了enctype,在谷歌浏览器上是没用问题了,但是在IE浏览器上是会报错的

    其实enctype可以不用设置,使用默认的就可以

  • 相关阅读:
    js在html中的加载执行顺序
    外部JS的阻塞下载
    mysql 中文字段排序
    PHP 多维数组排序 array_multisort()
    最简单的Linux下apache+mysql+php安装
    [TJOI2008] 彩灯 (线性基)
    [洛谷P2257] YY的GCD (莫比乌斯反演)
    [SDOI2015] 约数个数和 (莫比乌斯反演)
    [POI2007] ZAP-Queries (莫比乌斯反演)
    [NOI2003] 文本编辑器 (splay)
  • 原文地址:https://www.cnblogs.com/cailijuan/p/13564694.html
Copyright © 2020-2023  润新知