前端導出下載分別發送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可以不用設置,使用默認的就可以


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM