2015-10-13 2 views
0

Я хочу установить изображение src на моей странице с изображением, которое я получаю от ответа на вызов ajax, но я получаю значок сломанного изображения, когда я устанавливаю изображение src с ответом.Установить изображение src из ответа ajax

ниже является Ajax вызов

$.ajax({ 
         url: '<%=request.getContextPath() %>/rest/tasks/file/'+temp_taskID+'?fileType=JPG' + 
          '&fileName='+imgNames[i], 
         headers: { 
          'apiKey':'1xxxx3-dde5-4eec-b3ee-2xxxx507xxe8', 
          'ID':ID 
         }, 
         type: "GET" 
        }) 
        .done (function(data, textStatus, jqXHR) { 
         $("#img_carousel").attr("src", "data:image/jpeg;base64," + data);     
        }) 
        .fail (function(jqXHR, textStatus, errorThrown) {}); 

ошибка

enter image description here

+0

Что такое 'data'? – tymeJV

+0

данные - это файл изображения im, получающий в ответ , см. Это http://s28.postimg.org/cbxgqppst/Untitled.png – ViVekH

+0

Опубликовать вывод: 'console.log (data);' – Hackerman

ответ

1

Найдено решение моей проблеме

https://stackoverflow.com/a/25371174/3518278

пришлось добавить мим типа

mimeType: "text/plain; charset=x-user-defined", 

и

$("#img_carousel").attr('src', 'data:image/jpeg;base64,' + base64Encode(data)); 

function base64Encode(str) { 
       var CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/"; 
       var out = "", i = 0, len = str.length, c1, c2, c3; 
       while (i < len) { 
        c1 = str.charCodeAt(i++) & 0xff; 
        if (i == len) { 
         out += CHARS.charAt(c1 >> 2); 
         out += CHARS.charAt((c1 & 0x3) << 4); 
         out += "=="; 
         break; 
        } 
        c2 = str.charCodeAt(i++); 
        if (i == len) { 
         out += CHARS.charAt(c1 >> 2); 
         out += CHARS.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); 
         out += CHARS.charAt((c2 & 0xF) << 2); 
         out += "="; 
         break; 
        } 
        c3 = str.charCodeAt(i++); 
        out += CHARS.charAt(c1 >> 2); 
        out += CHARS.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); 
        out += CHARS.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)); 
        out += CHARS.charAt(c3 & 0x3F); 
       } 
       return out; 
      } 
Смежные вопросы