javascript - 无法通过异步 ajax 调用呈现 base64 图像返回

标签 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" />

最佳答案

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

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

关于javascript - 无法通过异步 ajax 调用呈现 base64 图像返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151450/

相关文章:

javascript - JS如何通过模板文字中的Array进行映射

javascript - 为什么安装 npm 软件包会重新安装所有其他软件包?

javascript - 如何隐藏包含特定值的类?

javascript - 如何使用 Javascript 或 jQuery 在表格中添加水平滚动属性

javascript - 如何创建显示隐藏导航菜单

javascript - 无法使用 jquery 循环列表

ajax - 我正在寻找支持协作的基于 Web 的文本编辑器

php - 在 SQL 查询中更改 PHP 变量的最有效方法?

javascript - AJAX获取请求,每5秒刷新一次

javascript - 是否有任何图像和 anchor 标记的替代组合