Как получить изображение в ответ через xhr? - PullRequest
0 голосов
/ 11 января 2012

Как получить изображение через dojo.xhr?

У меня есть datagrid, и при нажатии на любую строку я хочу получить изображение (зависит от выбранной строки) с сервера,Изображение должно быть выведено в виде диалога.

Я не вижу подходящего параметра handleAs для этого.

В настоящее время у меня есть два варианта,

1)Определите <image> внутри диалогового окна, событие onClick отобразит диалоговое окно, а также установите для параметра src ссылку для возврата изображения сервера (это не выглядит асинхронно).

2) Кодируйтеизображение, используя Base64, передайте как json. (И что? как преобразовать его обратно в изображение в браузере?)

Я не удовлетворен любым из вышеперечисленных.

Пожалуйста, предложите,Спасибо.

РЕДАКТИРОВАТЬ

2) Продолжение.нашел способ заставить это работать, установив атрибут src="data:image/jpeg; base64, *deferredObj*" тега <image>, но все же для меня это не очевидный способ сделать это.

Ответы [ 3 ]

0 голосов
/ 14 января 2012

Когда вы строите свою сеточную структуру, включите атрибут formatter: myFunction. Затем используйте myFunction для вызова dojo.xhrGet, чтобы получить изображение. Итак, как то так:

grid = new dojox.grid.dataGrid({
        id: 'grid',
        structure: gridStructure
});
gridStructure = [
    {field: 'id', name: 'ID', formatter: myFunction}
];
myFunction = function(){
    dojo.xhrGet(
        //retrieve image here   
    );
}
0 голосов
/ 21 января 2012

Спасибо, что поделились своими мыслями и своим временем. Я понял, что XHR не предназначен для двоичных данных (например, изображений) Соответственно изменил дизайн своего приложения.

0 голосов
/ 12 января 2012

Вы не должны использовать base64 кодировку изображения.IE имеет слабую поддержку data:image.

. URL-адрес изображения - правильный путь.Решение 1) лучше.Если производительность не очень хорошая, используйте предварительную загрузку изображения , чтобы улучшить ее.

...