Веб-служба Rest возвращает нулевое значение на мобильном устройстве, но работает на ПК в приложении Ionic. - PullRequest
1 голос
/ 14 июня 2019

Я использую веб-службу Rest JSONP в ионном приложении, которое отлично работает на ПК, но возвращает нулевое значение на мобильных устройствах

Файл моей страницы.ts

import {
    Component,
    OnInit
} from '@angular/core';
import {
    AlertController,
    LoadingController
} from '@ionic/angular';
import {
    ActionSheetController
} from '@ionic/angular';
import {
    Router
} from '@angular/router'
import {
    ProApiService
} from './../../../../services/pro-api.service';

@Component({
    selector: 'app-ranked-diagnosis',
    templateUrl: './ranked-diagnosis.page.html',
    styleUrls: ['./ranked-diagnosis.page.scss'],
})
export class RankedDiagnosisPage implements OnInit {
    tabSelect: string = 'show10';
    show10Data: Array < any >= [];
    showAllData: Array < any >= [];
    redFlagsData: Array < any >= [];

    loading: any;

    constructor(
        private api: ProApiService,
        public alertController: AlertController,
        public loadingController: LoadingController,
        public actionSheetController: ActionSheetController,
        private router: Router
    ) {}

    segmentChanged(event: any) {
        this.tabSelect = event.detail.value;
    }

    async presentActionSheet(buttons) {
        const actionSheet = await this.actionSheetController.create({
            header: 'Sub Diagnosis',
            buttons: buttons
        });
        await actionSheet.present();
    }

    async presentAlert(msg: string, header: string) {
        const alert = await this.alertController.create({
            header: '',
            subHeader: header,
            message: msg,
            buttons: ['OK']
        });

        await alert.present();
    }

    async presentLoading() {
        this.loading = await this.loadingController.create({
            message: 'loading...',
        });

        return await this.loading.present();

    }

    ngOnInit() {

    }

    ionViewWillEnter() {
        if (this.api.ProApiData.diagnoses_checklist.diagnoses) {
            this.showAllData =
                this.api.ProApiData.diagnoses_checklist.diagnoses;

            for (let i = 0; i < 10; i++) {
                this.show10Data.push(this.showAllData[i]);
            }

            this.showAllData.forEach(item => {
                if (item.red_flag == 'true') {
                    this.redFlagsData.push(item);
                }
            });
            console.log(this.showAllData);
        } else {
            console.log('error');
            this.router.navigateByUrl('isabel-pro');
        }

    }


    why_diagnosis(url: any, weightage: any) {
        this.presentLoading();
        this.api.why_diagnosisApi(url).subscribe(res => {
            let matched_terms = res._body.why_diagnosis.matched_terms;
            console.log(matched_terms);
            let alertMsg = `We matched the terms: ${matched_terms}<br><hr>Degree of match between query entered and database: ${weightage}`;
            this.presentAlert(alertMsg, 'Why did this diagnosis come up ?');
            this.loadingController.dismiss();
        }, err => {
            this.loadingController.dismiss();
            console.log('error');
        });
    }
}

в приведенном выше коде я вызываю функцию why_diagnosis, которая вызывает функцию из служебного файла.

Мой файл service.ts

import {
    Injectable
} from '@angular/core';
import {
    HttpClient,
    HttpHeaders
} from '@angular/common/http';
import {
    Jsonp
} from '@angular/http';
import {
    Observable
} from 'rxjs';
import {
    map
} from 'rxjs/operators';
import {
    ConstantsService
} from './../../../services/constants.service';

@Injectable({
    providedIn: 'root'
})
export class ProApiService {

    apiRoot = this.root.APIroot;
    diagnosisPROData: any;
    drugData: any;
    ProApiData: any;
    drugApiData: any;

    constructor(
        private jsonp: Jsonp,
        private http: HttpClient,
        private root: ConstantsService) {}

    why_diagnosisApi(url: any): Observable < any > {
        let whyUrl = `${this.apiRoot}Mob_isabelPRO.php? 
        why_url=${url}&callback=JSONP_CALLBACK`;

        return this.jsonp.request(whyUrl, 'callback')
            .pipe(
                map(
                    res => {
                        let why_diagnosis = res;
                        return why_diagnosis;
                    }
                )
            );

    }

}

код выше из моего сервисного файла.

это значение, которое я получаю в ПК

это возврат на мобильный

Я не знаю, что с ним не так. пожалуйста, предложите мне решение Спасибо

...