【发布时间】:2020-01-29 09:36:43
【问题描述】:
要求:我有一个 php 文件,它使用 MySQL 中的数据生成 Excel。我想从我的表单中调用它。
问题:当我从 HTML 调用它时,它可以正常下载,没有任何问题,但是当我从 Angular 调用它时,它没有被下载。
首先,我向您展示我在download.html下面的简单html代码
<html>
<head>
<body>
<form action="exportData.php" method="get">
<button type="submit">Submit</button>
</form>
</body>
</head>
</html>
下面是我的 Angular/Ionic 代码:
home.html
<ion-header>
<ion-navbar>
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>View Complaint Open / Close</ion-title>
<ion-buttons end>
<button ion-button (click)="showdata()">{{c_status}}</button>
<button ion-button icon-only (click)="downldexcl()" type="submit" title="Download Excel File">
<ion-icon name="ios-download-outline" class="top-icon"></ion-icon>
</button>
</ion-buttons>
</ion-navbar>
</ion-header>
home.ts
import { UserProvider } from '../../providers/user/user';
...//some code
downldexcl()
{
this.user.exlDwnld().subscribe(datac => {
console.log(datac,"list");
console.log(datac);
//document.location.href = this.user._url+"download.php?file="+datac;
});
}
user.ts
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Http,Response,Headers } from '@angular/http';
import 'rxjs/add/operator/map';
import {LoadingController, ToastController, ModalController, AlertController} from "ionic-angular";
...//some code
exlDwnld()
{
// let params1_c = '&t1label=' + t1label+'&t1data=' +encodeURIComponent(t1data)+'&h1colnum=' + h1colnum+'&t2label=' + t2label+'&t2data=' + encodeURIComponent(t2data)+'&h2colnum=' + h2colnum+'&total1=' + total1+'&total2=' + total2+'&fromdt=' + fromdt+'&todt=' + todt+'&filename=' + filename+'&topheader=' + topheader+'&subheader1=' + subhead1+'&subheader2=' + subhead2;
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this._http.post(this._url + "exportData.php", {headers: headers})
.map((response: Response) => response.json());
}
为什么单击 Ionic/Angular 页面中的按钮时,Excel 没有被下载。
【问题讨论】:
-
datac的控制台日志记录是什么? -
它正在显示数据,prnt.sc/pcpaju
-
从截图看来
exportData.php正在返回原始 tsv 数据?您可能不想将其映射到 json,并且您需要在响应中实际使用它。如果您希望它的行为类似于基本的 html 示例,您可以将 http 客户端替换为window.open(this._url + "exportData.php?" + params)之类的东西 - 这应该直接打开 php 文件,就像 html 示例中的表单提交一样
标签: angular typescript ionic-framework ionic2 ionic3