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 pleted.
What am I doing wrong?
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 pleted.
What am I doing wrong?
Share Improve this question asked Dec 31, 2010 at 14:17 AriodAriod 5,85122 gold badges77 silver badges104 bronze badges1 Answer
Reset to default 7If you use dojo.io.iframe.send
, then the response should be in certain format to tell dojo that the request is pleted. 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 pleted. If you didn't specify a timeout
, dojo will wait forever.
To achieve the task, you can use following approach:
var downloadPdfIframeName = "downloadPdfIframe";
var iframe = dojo.io.iframe.create(downloadPdfIframeName);
dojo.io.iframe.setSrc(iframe, url, true);