( NB Это перефразирование ответа @ dmitry, но только что уточненное)
Проблема, с которой вы столкнулись, заключается в том, что нет возможности напрямую вернуть файл пользователю черезAJAX - браузер должен запрашивать файл, используя обычный синхронный HTTP-запрос.
Чтобы решить эту проблему, вашему PHP потребуется:
- Создать файл Excel как обычно.
- Вместо того, чтобы записывать файл обратно пользователю, сохраните его где-нибудь в файловой системе сервера (т.е. используя
file_put_contents()
или аналогичный). - Верните файл path вuser.
Ваш JS при получении этого ответа должен будет:
- Считать путь к файлу Excel обратно из сценария PHP.
- Открытьфайл Excel в новой вкладке / окне, используя
window.open()
(или перенаправить в текущей вкладке / окне, установив location.href
).