Я пишу приложение Angular2 с PHP-сервером. Когда я делаю запрос на сервер из углового приложения, он отправляет мне это сообщение об ошибке в консоли браузера.
Unexpected token < in JSON at position 0
Я прочитал вопрос по этой проблеме. Они говорят, что проблема в типе ответа http
ответ. Они говорят, что тип ответа должен быть json
, Но тип ответа text/html
в моем приложении.
Это файл service.ts, связанный с моей проблемой user.service.ts
import { Injectable } from '@angular/core';
import {User} from '../models/user';
import {Http} from '@angular/http';
@Injectable()
export class UserService {
private currentUser: User;
constructor(private http: Http) {
this.currentUser = new User(null, null, null, false);
}
getCurrentUser() {
return this.currentUser;
}
logIn(username, password) {
let curUser = new User(username, password, null, false);
this.http.post('http://localhost/back_End/controllers/user.php/', {'username': username , 'password': password})
.map(res => res.json())
.subscribe(
users => {
curUser = users[0];
console.log(curUser);
}
);
console.log(curUser);
}
Проблема связана с logIn
метод.
Это соответствующий файл php user.php
<?php
$data = json_decode(file_get_contents("php://input"));
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
$server_ame = "localhost";
$username = "root";
$password = "";
$dbname = "yathra";
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "select * from user where username='$data->username' and password='$data->password'";
$result = $conn->query($sql);
if($result->num_rows > 0) {
$data = array();
while($row = $result->fetch_assoc()) {
$data[] = $row;
}
}else {
echo "0 results";
}
echo json_encode($data);
$conn->close();
?>
Я новичок в Angular2. Может кто-нибудь дать мне решение для этого?
Вы можете попробовать для этого:
Проблема была здесь, потому что вы используете json () вместо json
JSON — всегда возвращайте текст (это может быть HTML, PHP, XHTML и т. д.).
this.http.post (»Http: //localhost/back_End/controllers/user.php/»,
{‘имя пользователя’: имя пользователя, ‘пароль’: пароль})
.map (res => res.json) // СМОТРИТЕ ЗДЕСЬ
.подписываться(
пользователи => {
curUser = users [0];
console.log (curUser);
}
);
Вы видите эту ошибку, потому что вы пытаетесь проанализировать файл, как будто это JSON, а это не так:
.map(res => res.json())
Попробуйте записать свой ответ перед запуском res.json
и вы увидите, что это не JSON-файл, который начинается с <
символ (например, php, XML, HTML и т. д.).