0
クライアント側にdocxファイルをダウンロードするボタンがあります。ファイルはPHPWordで生成されます。 ChromeでそれがFirefoxで働いていないが:FirefoxでXMLHttpRequestが機能していません
JS:
var req = new XMLHttpRequest();
req.open("POST", "/vendor/gendocx.php", true);
req.responseType = "blob";
req.onload = function (event) {
var blob = req.response;
console.log(blob.size);
console.log(blob);
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="TEST_this out.docx";
link.click();
};
req.send(content);
PHP:
$filename = 'TEST_this out';
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpword, 'Word2007');
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
$objWriter->save($filename);
$objWriter->save("php://output");
exit;
私はすでにこのサイト上の他のソリューションを試みたが、成功しませんでした。この問題で私を助けてくれることを願っています。
エラーメッセージはありません。これは私がそれを得たblob
"動作していません"というのは良い問題ではありません。コンソールにはどのようなエラーメッセージが表示されますか? 'console.log'ステートメントを追加すると、どのコード行が正常に実行されますか? – Quentin
ChromeとFirefoxがAjaxのフェッチをここで扱うのは驚くべきことですが(不可能ではありません)私は彼らが '.download'や自動化された' .click() 'を違った方法で扱っていることに驚くことはありません。障害はどこで発生するのですか? 'onload'は走っているのですか? – apsillers
@quentin in chrome、すべてのコードが正常に実行されています。ブラウザの下部に通常のボタンが表示され、ファイルを開きます。しかし、Firefoxでは、残念ながら何もしません。コンソールにエラーはありません。ステータスコードは200です。 – moody