2015-10-15 38 views
1

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

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

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

+0

你能帮我正在返回的字符串,并将其放置在您的浏览器地址栏中,并成功地获得图像。 base64字符串本身可能有问题。代码看起来正确 – QBM5

回答

2

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

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