问题描述 ---- 开发过程中遇到通过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;
|