Intereting Posts
Отсутствие повышения производительности с APC на WampServer обновлять сразу две таблицы Используя PHPUnit с Selenium, как я могу проверить, что элемент содержит что-то? Служба проверки URL-адреса для вредоносного ПО или фишинга? получить пользовательский часовой пояс Программно построение htpasswd Просмотры base64 закодированный blob в HTML с PHP Как преобразовать данные latin1_swedish_ci в utf8_general_ci? Неустранимая ошибка: вызов неопределенной функции oci_connect () Правила тегов и атрибутов DOM и фильтрация Перенаправить страницу после завершения процесса в PHP Скопируйте AMI в отдельный регион из отдельной учетной записи Как обновить строку с несколькими изображениями, которые имеют только одно изображение, вставленное первоначально в php html2canvas и jsPDF: отправить сгенерированный PDF-файл в виде вложения электронной почты Ошибка PHP: php_network_getaddresses: getaddrinfo не удалось: (при получении информации с другого сайта.)

Как я могу предложить ответ AJAX POST пользователю в качестве загрузки?

Я пытаюсь включить функцию экспорта vCard в существующую страницу с информацией об учетной записи.

Уродливые методы включают в себя 1, отправку формы на одну и ту же страницу, ее обработку и повторную визуализацию всей страницы, или 2, GET-таргетинг на iframe на странице. Я бы очень хотел, чтобы избежать обоих, но мне, возможно, придется использовать № 2 для достижения цели.

Прямо сейчас у меня есть:

<input type="image" src="/intra/imgs/icons/vcard.png" onclick="$.post('/intra/vcard.php', { id: '992772', type: 'sponsor'});"> 

Что работает в том смысле, что если я наблюдаю за активностью XHR в Firebug, я вижу, что запрос возвращается с правильным ответом, полным данных в формате vCard. Однако он не запрашивает пользователя для загрузки ответа в виде файла, даже если карта отправлена ​​с:

 header('Content-Type: text/x-vcard'); header("Content-Disposition: attachment; filename={$this->name_first}{$this->name_last}.vcf"); 

Я что-то делаю неправильно, или это просто невозможно?

Я в замешательстве, что именно проблема. Почему бы просто не сделать что-то вроде:

 <input type="image" src="/intra/imgs/icons/vcard.png" onclick="window.location='/intra/vcard.php?id=992772&type=sponsor';"> 

А затем верните соответствующие заголовки загрузок на vcard.php ? Когда браузер получит их, он останется на одной странице и предложит загрузить. Вам придется изменить свой код, чтобы обрабатывать переменные как $_GET вместо $_POST но вы должны использовать GET для этого в любом случае.

EDIT, как указано в комментариях, было бы еще более уместно сделать это:

 <a href="/intra/vcard.php?id=992772&type=sponsor"><img src="/intra/imgs/icons/vcard.png"></a> 

Как и тогда, он будет доступен пользователям с отключенным javascript.

Да, вы не можете запустить загрузку с xhr. Единственный способ, который я нашел, это вариант №2, используйте iframe.

Возможно, плагин jquery (я предполагаю, что вы используете jquery) является излишним для этой цели, но это может пригодиться вам.

проверьте, является ли имя файла '{$ this-> name_first} {$ this-> name_last} .vcf') действительным и HTTP-ответ в firebug! (вкладка сети, нажмите на ответ).

это содержание там и правильно?
правильная длина контента? как насчет http-статуса?

Создавайте контент во время публикации, а затем перенаправляйте его на этот контент.