解決ajax獲取流文件亂碼問題


問題描述
----
開發過程中遇到通過ajax訪問后台獲取圖片驗證碼
接口會返回亂碼
另外下載zip圖片包的時候也是返回一堆亂碼

 

 

一開始采用的方法是通過ajax訪問接口拿到返回的結果,結果是上圖亂碼,后面發現直接在img src屬性里填寫接口就可以直接拿到

但是我們的接口都是經過簽名的,所以最后的方法是將接口地址和參數地址拼接返回,js將src替換成返回的url這個時候就完美的解決了問題

大概的代碼如下

  //獲取圖片驗證碼
  getCodeImg: function(param) {
    //只對type進行簽名,然后進行拼接
    var param = _bale.pack("img", param);
    var parameters = "?";
    for (var key in param) {
      parameters += key + "=" + param[key] + "&";
    }
    parameters = parameters.substr(0, parameters.length - 1);
    //編碼因為paramMap={"type":""}的{}在liunx無法使用
    parameters = encodeURI(parameters);
  var url = _mm.getServerUrl("sso", "");
    return url + "/common/getCodeImg" + parameters;
  }

//請求url
var
url = _orderApi.getCodeImg(imgParam); $("#imgCode").attr("src", url);

 

 

另外還有個下載zip壓縮包的功能也是類似

 exportProImg: function(data, resolve, reject) {
    //只對type進行簽名,然后進行拼接
    var param = _bale.pack("exportImg", data);
    var parameters = "?";
    for (var key in param) {
      parameters += key + "=" + param[key] + "&";
    }
    parameters = parameters.substr(0, parameters.length - 1);
    var url = _mm.getServerUrl("upload", "");
    return url + "/upload/exportImg" + parameters;
  }
   //二進制文件打開方式
       var url = _product.exportProImg({ goodsImgs: goodsImgs, goodsCode: this.data.goodsDetails.goodsCode });
//直接在瀏覽器打開 window.location.href
= url;

 


免責聲明!

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



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