I would like to use a Dojo button to download an Excel or a PDF file. So far I’ve managed to do it by using a call to dojo.io.iframe in the onClick handler of the button. However, this will only download the file once. Any successive calls will be ignored.
This is the call:
function exportToExcel() {
dojo.io.iframe.send({
url: '/report/export',
handleAs: 'xml',
content: {
__export: 'excel'
}
});
}
As if the dojo.io.iframe does not consider the previous request to be completed.
What am I doing wrong?
If you use
dojo.io.iframe.send, then the response should be in certain format to tell dojo that the request is completed. The response should be wrapped in the<textarea>element of a HTML document. As in your case, the response is a binary stream, so dojo didn’t know whether the request is completed. If you didn’t specify atimeout, dojo will wait forever.To achieve the task, you can use following approach: