Загрузка файла через AJAX POST

Я пытаюсь обеспечить простую загрузку, используя запрос AJAX POST. Пользователь нажимает<span></span> и начинается загрузка (или появляется диалог загрузки, в зависимости от браузера). Я'мы реализовали все это, но ответ AJAX нене вызывает поведение загрузки браузера, и я нене знаю почему.

Вот'мой код:

HTML / веточка:

<span id="export_csv">csv - click me to download the file</span>

JavaScript:


$(document).ready(function() {
  $('#export_csv').click(function(){
    var params = "some params";
    $.ajax({
      type: 'POST',
      url:  "{{path('ExportBundle_export', {'format': 'csv','report' : 'basic'})}}",
      data: params
    });
  });
});

Код контроллера (symfony2, но это не такне имеет значения здесь):

$response = new Response(file_get_contents($document->getPath()));
$response->setStatusCode(200);
$response->headers->set('Content-Type', $document->getMime());
$response->headers->set('Content-Description', 'Submissions Export');
$response->headers->set('Content-Disposition', 'attachment; filename='
    . $filename . '.' . $format);
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->headers->set('Pragma', 'no-cache');
$response->headers->set('Expires', '0');
return $response;

Это пример запроса:

Request URL:http://myapp.local/app_dev.php/export/basic/csv
Request Method:POST
Status Code:200 OK

и заголовки ответа: я

cache-control:private, must-revalidate
Connection:close
content-description:Submissions Export
content-disposition:attachment; filename=report_1363013244.csv
Content-Length:790
content-transfer-encoding:binary
Content-Type:text/csv; charset=UTF-8
Date:Mon, 11 Mar 2013 14:47:24 GMT
expires:0
pragma:no-cache
Server:Apache/2.2.22 (Ubuntu)
x-debug-token:513dee7c99fdb
X-Powered-By:PHP/5.3.10-1ubuntu3.5

я проверилNetwork вкладка в панели инструментов Google Chrome, похожая на Firebug, и ответ выглядит точно так же, как файл. Может быть, что-то не так с моими заголовками, но я уже дважды их проверил ...

PS 1I '

Я хотел бы сделать это с помощью AJAX (я предпочитаю это больше, чем создание формы HTML).

PS 2I '

у нас есть много параметров на стороне клиента (javascript). Мне нужно, чтобы все они были доступны в контроллере (серверный скрипт). При использовании AJAX я просто передаю их вdata ключ.

Ответы на вопрос(3)

Ваш ответ на вопрос