не могу получить параметры, отправленные HTTP-запросом в Angular 6 - PullRequest
0 голосов
/ 31 августа 2018

Это мой код. Я отправляю http post request в файл posts-experiencecias.php и пытаюсь получить данные по глобальной переменной $ _REQUEST, но ничего не могу получить. Знаете почему?

post.service.ts

import { Injectable } from '@angular/core';
import { HttpHeaders, HttpClient } from '@angular/common/http';
import { Post } from './post';

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type': 'application/json',
  })
};

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

  private postsUrl = 'http://local.blog.com/controllers/posts-experiencias.php';

  getPostsSegunSeccion(seccion) {
    const obj = {
      nome: 'gabriel',
      age: 20
    };
    return this.http.post(this.postsUrl, JSON.stringify(obj), httpOptions);
  }

}

post.component.ts

import { Component, OnInit } from '@angular/core';
import { PostService } from './post.service';
import { Post } from './post';

@Component({
  selector: 'app-posts',
  templateUrl: './post.component.html',
  styleUrls: ['./post.component.css']
})
export class PostComponent implements OnInit {

  seccion: string;
  constructor(private postService: PostService) {}

  actualizarPosts(event) {
    this.seccion = event.target.attributes['data-categoryvalue'].value;
    this.postService.getPostsSegunSeccion(this.seccion)
      .subscribe((data) => {
        console.log(data)
      });
  }

}

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

В моем случае, поскольку он получает данные в формате Json, мне пришлось использовать file_get_contents ('php: // input') вместо использования $ _REQUEST для их получения.

сообщений-experiencias.php

// Collect the data that has been sent in Json format (String)
$dataInJsonString = file_get_contents('php://input');

// decode Json 
$decodedData = json_decode($dataInJsonString);

echo $decodedData->age;
echo $decodedData->nome;
0 голосов
/ 31 августа 2018

Делая это:

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type': 'application/json',
  })
};

Вы установили Content-Type на application/json. Это означает, что ваш сервер будет ожидать полезной нагрузки JSON.

Но, делая JSON.stringify(obj) в getPostsSegunSeccion, вы, по сути, отправляете string, а не JSON Объект.

Так что вам нужно удалить JSON.stringify из getPostsSegunSeccion, и это должно решить эту проблему для вас. Ваш getPostsSegunSeccion должен выглядеть примерно так:

getPostsSegunSeccion(seccion) {
  const obj = {
    nome: 'gabriel',
    age: 20
  };
  return this.http.post(this.postsUrl, obj, httpOptions);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...