我正在尝试使用imagelink下载一个只有一大块二进制数据的图像。下载我使用的是enyo.Ajax模块。它发出警告:“ Ajax请求设置为处理JSON,但数据不是JSON格式”。 以下是我到目前为止所实施的内容。
enyo.kind({
name:"enyo.sample.ajaxapp",
components:[
{kind:"onyx.Input",name:"urlinput", placeholder:"Input URL",classes:"input"},
{kind:"onyx.Button",name:"download",ontap:"fetch",classes:"button",content:"Fetch"},
{kind:"enyo.Control",name:"image",tag:"img",classes:"image"}
],
fetch:function(inSender,inEvent){
var ajax= new enyo.Ajax({
url:this.$.urlinput.getValue(),
handleAs:'blob'
});
ajax.go();
ajax.responseType='blob';
ajax.response(this,"processResponse");
ajax.error(this,"errorResponse");
},
processResponse:function(inSender,inResponse){
var img=this.$.image;
var blob=inResponse;
//var data=window.URL.createObjectURL(blob);
img.setSrc(blob);
},
errorResponse:function(inSender,inResponse){
console.log("error occured");
}
});
我想知道是否不可能将数据与json / text / xml分开?如果没有,那么我如何修改我的代码以下载它。默认情况下,所有数据都以JSON形式接收,因此我在创建ajax对象时将handleAs设置为bolb。我是否需要更改contentType或其他内容。
答案 0 :(得分:1)
我认为Ajax不是请求图像数据的最佳方式。你有(至少)两个解决方案:
src
标记上设置<img>
属性,并使用onload
了解
资源下载时。src
设置为编码数据加上相应的数据
标题信息。有关详细信息,请参阅此问题:Asynchronously load images with jQuery