Как работает jQuery.post () с Content-Disposition: attachment?

Здесь немного сумасшедший. Я делаю вызов Ajax с помощью jQuery.post следующим образом:

$.post('php/print.php',{data:dS},function(res){... },"text"); 

Я возвращаюсь из print.php (как тест):

 header("Content-type: application/vnd.ms-word"); header("Content-Disposition: attachment;Filename=test.doc"); echo "<html>"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">"; echo "<body>"; echo "Testing-2-3!"; echo "</body>"; echo "</html>"; 

Данные идут через штраф в соответствии с Firebug, включая заголовки. Но как мне получить браузер (Firefox в этом случае), чтобы предложить пользователю сохранить вложение?

Благодарю.

Это просто невозможно. Запросы AJAX никогда не вызывают приглашения пользователя.

Однако вы можете просто вернуть запрос, например, JSON или открытый текст, содержащий URL-адрес, а затем использовать location.href = ...; перенаправить на него; это приведет к запросу, которое вы ищете.

Если запрос всегда приводит к загрузке файла, вы также можете рассмотреть возможность использования обычной формы и вообще не использовать AJAX; если ответ вызывает диалог загрузки, в любом случае предыдущая страница останется в окне браузера.

Почему вы не ссылаетесь прямо на print.php

и вызывать php-вывод в браузер, используя этот код

 $fp = fopen("php://output", 'w'); header("Content-type: application/vnd.ms-word"); header("Content-Disposition: attachment;Filename=test.doc"); $fp = fopen("php://output", 'w'); fwrite($fp,"your content here"); fclose($fp);