2012-01-11 2 views
0

dojo.xhr을 통해 이미지를받는 방법?xhr을 통해 응답으로 이미지를받는 방법?

나는 datagrid을 가지고 있으며 어떤 행을 클릭해도 서버에서 선택한 이미지에 따라 이미지를 가져 오려고합니다. 이미지가 대화 상자로 팝됩니다.

이 경우 어떤 매개 변수도 표시되지 않습니다.

은 현재 내가 두 가지 옵션,

1) 대화 상자 내부 <image> 정의를 가지고 onClick 이벤트 (이 비동기 보이지 않는)뿐만 아니라 링크를 반환하는 서버 이미지에 src 매개 변수를 설정 한 대화 상자를 표시합니다.

2) Base64를 사용하여 이미지를 인코딩. JSON로 전달할 (그리고 뭐? 어떻게 브라우저에서 이미지로 다시 변환?)

나는 위의 만족 아닙니다.

좋습니다. 감사.

편집

2)에서 계속. <image> 태그의 src="data:image/jpeg; base64, *deferredObj*" 속성을 설정하여이 작업을 수행 할 수있는 방법을 찾았지만 나에게 여전히이 방법을 사용하는 것은 아닙니다.

답변

0

감사합니다. 시간을 공유해 주셔서 감사합니다. XHR이 이진 데이터 (이미지와 같은) 용으로 설계되지 않았다는 것을 깨달았습니다. 그에 따라 내 응용 프로그램의 디자인이 변경되었습니다.

0

이미지의 base64 인코딩을 사용하지 마십시오. IE는 data:image을 잘못 지원합니다.

이미지 URL은 올바른 방법입니다. 해결책 1)이 더 좋습니다. 성능이 좋지 않으면 image preloading을 사용하여 성능을 향상 시키십시오.

+0

'IE'와 'data : image'로 결함을 지적 해 주셔서 감사합니다. 나는 FF로만 집중하고 있습니다. 그러나 두 접근법은 모두 나에게 분명하지 않습니다. 예를 들어 mimetype'Content-Type = image/jpg '를 설정하는 것과 같은 방법이 있습니다. 'Http'-'Mimetypes'는 15 년 동안이 목적을 위해 존재합니다. 나는'xhr'을 통해 이미지를 보내는 것은 상당히 사소한 일이며'dojo' (표준 또는 적어도 간단한 방법으로)로 할 수 없다고 믿을 수 없다 : ( – 0xc0de

0

그리드 구조를 만들 때 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 
    ); 
} 
관련 문제