无法通过异步ajax调用返回base64图像

时间:2015-10-15 14:38:42

标签: javascript jquery ajax asynchronous knockout.js

我尝试进行多个异步ajax调用,其中一个是从服务器请求base 64映像。如果我将base64图像的ajax请求设置为同步,它适用于IE,Chrome和Firefox。但是,对于异步的情况,图像每次都在IE中呈现,但偶尔也不会在Chrome和Firefox中呈现。有时它正在被渲染,有时则不是。 最重要的是,移动浏览器不会渲染图像。

代码非常简单,但我不知道它有什么问题。

function TestViewModel() {
  var self = this;
  
  self.Image = ko.observable();
 
  
  self.GetProfileData = function () {
    $.ajax({
     async: true,
     type: 'GET',
     url: ..,
     success: {
        // return profile data
     }  
    });
  }
  
  self.GetProfileImage = function() {
    $.ajax({
       async: true, 
       type: 'GET',
       url: ..,
       success(data): {
        self.Image(data.Base64Image);
       }
    });
   }
  
  self.GetProfileData();
  self.GetProfileImage();
}

ko.applyBindings(new TestViewModel());
<img data-bind="attr: { src: Image }" alt="ProfileImage" />

1 个答案:

答案 0 :(得分:2)

我猜你应该使用内容类型前缀:

self.Image("data:image/x;base64," + data.Base64Image);