I’m trying to include a vCard export function in an existing page full of account information.
The ugly methods would involve 1, submitting a form to the same page, processing it and re-rendering the whole page, or 2, a GET targeting an iframe on the page. I’d really like to avoid both of those, but I may have to use #2 to achieve the goal.
Right now I have:
<input type='image' src='/intra/imgs/icons/vcard.png' onclick='$.post('/intra/vcard.php', { id: '992772', type: 'sponsor'});'>
Which works in the sense that if I watch XHR activity in Firebug I see the request come back with the correct response, full of vCard formatted data. However it does not prompt the user to download the response as a file, even though the card is sent with:
header('Content-Type: text/x-vcard'); header('Content-Disposition: attachment; filename={$this->name_first}{$this->name_last}.vcf');
Am I doing something wrong, or is this just not possible?
I’m confused as to what exactly the problem is. Why not just do something like:
And then return the appropriate download headers on
vcard.php? When the browser gets those, it will stay on the same page and prompt for download. You will have to change your code to handle the variables as$_GETinstead of$_POSTbut you should be using GET for this anyways.EDIT as pointed out in the comments, it would be even more appropriate to do this:
As then it would be accessible to users with javascript disabled.