Я использую следующий вызов ajax для отправки некоторых данных на страницу PHP, которая генерирует файл excel. Если я запустил страницу PHP сам по себе с поддельными данными, уже приписываемыми массиву, он загружает файл, но если я попытаюсь запустить php-страницу через кнопку ajax, ничего не загрузится. Я не уверен, в чем проблема, но я получаю 500 Internal Server Error
, поскольку php пытается отправить файл обратно. Смотрите ниже:Как вернуть файл с помощью запроса AJAX
Заголовки запросов:
POST /XLS.php HTTP/1.1
Host: 127.0.0.1
Connection: keep-alive
Content-Length: 15
Pragma: no-cache
Cache-Control: no-cache
Accept: */*
Origin: http://127.0.0.1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Referer: http://127.0.0.1/multiLine.php
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,fr-FR;q=0.6,fr;q=0.4
Cookie: PHPSESSID=rd44cluc503datf36616b9e5b5; popupPartNumber=null
Заголовки ответов:
HTTP/1.0 500 Internal Server Error
Date: Fri, 13 Mar 2015 18:21:55 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15
X-Powered-By: PHP/5.5.15
Content-disposition: attachment; filename="multiLine report 03.13.15 - .xlsx"
Content-Transfer-Encoding: binary
Cache-Control: must-revalidate
Pragma: public
Content-Length: 0
Connection: close
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
на основе AJAX я использую:
$.ajax({
url: "XLS.php",
type: "post",
data: {xl: xl},
}); //closes ajax call
и я прошло около 7 разных contenttype:
опции, чтобы увидеть, изменилось ли одно из них, но никто из них не сделал этого.
Как вернуть этот файл?
Это внутренняя ошибка сервера. Посмотрите на свой серверный код и свои журналы ошибок. Вы не можете определить, что вызвало внутреннюю ошибку сервера от клиента, это не ошибка клиента. – Quentin