2010-12-31 3 views
1

Я хотел бы использовать кнопку Dojo для загрузки Excel или PDF-файла. До сих пор мне удалось это сделать, используя вызов dojo.io.iframe в обработчике onClick. Однако это будет загружать только один файл. Любые последующие вызовы будут проигнорированы.dojo.io.iframe и загрузка Excel/PDF

Это вызов:

function exportToExcel() { 
    dojo.io.iframe.send({ 
     url: '/report/export', 
     handleAs: 'xml', 
     content: { 
      __export: 'excel' 
     } 
    }); 
} 

Как будто dojo.io.iframe не рассматривает предыдущий запрос будет завершен.

Что я делаю неправильно?

ответ

7

Если вы используете dojo.io.iframe.send, тогда ответ должен быть в определенном формате, чтобы сообщить додзё, что запрос завершен. Ответ должен быть обернут в элементе <textarea> документа HTML. Как и в вашем случае, ответ представляет собой двоичный поток, поэтому додзё не знал, завершен ли запрос. Если вы не указали timeout, додзе будет ждать вечно.

Для достижения этой задачи, вы можете использовать следующий подход:

var downloadPdfIframeName = "downloadPdfIframe"; 
var iframe = dojo.io.iframe.create(downloadPdfIframeName); 
dojo.io.iframe.setSrc(iframe, url, true); 
+0

Это работает очень хорошо. Просто не забудьте добавить blank.html в свой корень и указать djConfig.dojoBlankHtmlUrl = "./blank.html". – CrazyEnigma

+0

blank.html не требуется в dojo 1.7.2, я только что протестировал его;) – maialithar

+1

с таким подходом, как проверить, есть ли файл в ответе или нет с обратным вызовом ?? –

Смежные вопросы