Не вызывать PHP-файл из Angular - PullRequest
0 голосов
/ 30 сентября 2019

Требование: у меня есть файл php, он генерирует Excel с данными из MySQL. Я хочу вызвать его из своей формы.

Проблема: Когда я вызываю его из HTML, он обычно загружается без каких-либо проблем, но когда я звоню из Angular, он не загружается.

Сначала я показываю вам мой простой HTML-код ниже download.html

<html>
<head>
<body>

<form action="exportData.php" method="get">
  <button type="submit">Submit</button>
</form>

</body>
</head>
</html>

Теперь ниже мой угловой / ионный код:

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 не загружается.

1 Ответ

0 голосов
/ 30 сентября 2019

Вы используете метод отправки запроса в угловых вместо get. Попробуйте изменить это.

return this._http.post(this._url + "exportData.php", {headers: headers})

до

return this._http.get(this._url + "exportData.php", {headers: headers})

Это должно помочь.

Также вы используете старый модуль http, импортируйте новый HttpClientModule из '@ angular / common / http '

и удалите карту в response.json, новый модуль сделает это за вас.

...