我需要將一個POST
從Angular創建爲一個URL ./makeFile.php
,它將根據數據庫中提供的信息創建一個包含數據庫查詢內容的文件。
PHP強制瀏覽器打開一個保存對話框,而不是僅僅顯示與這兩條線的響應:
header('Content-Disposition: attachment; filename="' . $file_name . '.prj"');
echo $json;
但製作使用$http
AngularJS一個POST
強制瀏覽器無法打開此保存對話框:
$http({
method: 'POST',
url: './makeFile.php',
data: {
project: ProjectService.getProject()
}
})
我不能讓一個GET
因爲數據是一個網址太長,否則我會用一個簡單的$window.open('./makeFile.php', '_blank')
這在小型的數據(罕見)情況下工作的更換。
如何讓Angular將此POST
添加到另一個窗口或讓瀏覽器打開保存對話框?
編輯:
隨着伊萬的建議,我不得不以編程方式創建一個表單來達到我想要的。以下是我做的:
的JavaScript:
var form = document.createElement('form');
form.action = './php/saveProject.php';
form.method = 'POST';
form.target = '_blank';
form.style.display = 'none';
var input = document.createElement('input');
input.type = 'text';
input.name = 'project';
input.value = angular.toJson(ProjectService.getProject(), false);
var submit = document.createElement('input');
submit.type = 'submit';
submit.id = 'submitProject';
form.appendChild(input);
form.appendChild(submit);
document.body.appendChild(form);
$('#submitProject').click();
document.body.removeChild(form);
PHP:
<?php
$project = get_magic_quotes_gpc() ? stripslashes($_POST['project']) : $_POST['project'];
// ...
header('Content-Disposition: attachment; filename="' . $file_name . '.prj"');
echo $json;
?>
你如何在你的app中調用'$ http'?使用模型,控制器等? –
以target =「_ blank」或window.open顯示成功時的「下載」鏈接。 –