Проблемы экспорта в XLS с PHP + Jquery - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь экспортировать некоторые таблицы, созданные с помощью PHP, из данных MySQL. Я пытаюсь отправить информацию через AJAX в файл с этим кодом:

<?php
header("Content-type: application/vnd.ms-excel; name='excel'");  
header("Content-Disposition: filename=excel.xls");  
header("Pragma: no-cache");  
header("Expires: 0");  
echo $_POST['table'];
?>

Данные поступают из этой функции

function export_excel (id_table) {
    var table =  $("#" + id_table).html();
    $.ajax({
            type: 'POST',
            url: 'toexcel.php',
            data: 'table='+table
        });
}

Через Firebug я вижу, что таблица отображается правильно, но загрузка не начинается. В чем может быть проблема?

1 Ответ

2 голосов
/ 15 апреля 2011

Невозможно начать загрузку файла в ответ на запрос Ajax. Вы должны отправить браузер для загрузки ресурса, как если бы вы переходили на страницу.

Если вам нужно для использования метода POST, я думаю, что идеальный способ сделать это:

  • Имеет реальный элемент <form>, в который вы записываете данные POST

  • Есть невидимый или маленький iframe. Дайте ему имя

  • Дайте форме имя iframe как свойство target

  • submit() форма

если все заголовки установлены правильно (возможно, вам придется добавить еще несколько, например Content-disposition: attachment), это должно инициировать загрузку файла, не затрагивая вашу текущую страницу.

Если вы можете использовать GET, простой

location.href="toexcel.php?param1=value1&param2=value2"

должно уже сделать.

...