こんにちは皆、私はPHPスクリプトによって返されたオブジェクトjsonをフェッチするのに問題があります。angular2、PHP with mysql
サーバがオブジェクトjsonを返すとオブジェクトが角度をつけて回復すると、このエラーが発生します。コードからjson convertion res.json()を削除すると、このエラーは消えて、サーバーの応答は空になります。
ERROR SyntaxError: Unexpected token in JSON at position 0
at Object.parse (<anonymous>)
at Response.webpackJsonp.../../../http/@angular/http.es5.js.Body.json (http.es5.js:797)
at SafeSubscriber._next (list-alunos.component.ts:14)
at SafeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
at SafeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.next (Subscriber.js:185)
at Subscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber._next (Subscriber.js:125)
at Subscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at XMLHttpRequest.onLoad (http.es5.js:1226)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:424)
at Object.onInvokeTask (core.es5.js:3881)
私は情報と、このサービスを使用するコンポーネントを復旧サービスをしました:
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import 'rxjs/Rx';
@Injectable()
export class ApiHttpDaoService {
constructor(private http: Http) { }
public getListStudents() {
return this.http.get("http://localhost/obtener_alunos.php");
}
}
これはコンポーネントです:
import { Component, OnInit } from '@angular/core';
import { ApiHttpDaoService } from '../../services/api-http-dao.service';
@Component({
selector: 'app-list-alunos',
templateUrl: './list-alunos.component.html',
styleUrls: ['./list-alunos.component.css']
})
export class ListAlunosComponent implements OnInit {
constructor(private service: ApiHttpDaoService) {
this.service.getListStudents().subscribe(
res => console.log(res.json())
);
}
ngOnInit() { }
}
そして、これはそのPHPファイルですjsonオブジェクトを返す:
<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
require("conectar_mysql.php");
$vec_res = array();
$result = mysqli_query($conn, "SELECT * FROM alunos");
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
array_push($vec_res, array('nome' => $row['nome'], 'idade' =>
$row['idade'], 'morada' => $row['morada']));
}
echo json_encode($vec_res);
}
mysqli_close($conn);
?>
ありがとうございました
だけでなく、あなたのネットワーク]タブに表示何をすべきか、実際に何が受信されていますか?少なくともあなたはJSONを受け取っていません。 PS。 PHPスクリプトの 'else'も有効なjsonを返さないので、実際に受け取っているのでしょうか?応答は有効なjsonではないため、 – Alex
です。 –
まあ**あなたは実際に何を受け取りますか?私は、あなたのネットワークタブをチェックし、私たちに教えてください。あなたのphpスクリプトが 'else'に行くとJSONが返されません:' echo "0 results"; 'あなたが編集した;) – Alex