2017-01-09 2 views
0

뉴스 피드를 표시하는 모바일 앱을 구축 중입니다. 내 앱에서는 상태를 게시 할 수 있어야합니다.Angular2 - 서버에 POST 요청 보내기

상태는 POST 방법을 사용하여 PHP 서버로 전송됩니다.

이제 PHP2는 angle2를 사용하여 보낸 POST 요청을 읽을 수 없습니다.

<?php 
header('Access-Control-Allow-Origin: *'); 
header('Content-Type: application/json'); 

$status = $_POST["status"]; 
echo json_encode($status); 
?> 

파이어 버그 콘솔

form.html

<form class="sample-form post-form" [formGroup]="post_form" (ngSubmit)="createStatus()"> 
      <ion-item> 
       <ion-textarea rows="7" placeholder="What's happening?'" formControlName="status"></ion-textarea> 
      </ion-item> 
      <section class="form-section"> 
       <button ion-button block class="form-action-button create-post-button" type="submit" [disabled]="!post_form.valid">Post</button> 
      </section> 
      </form> 

form.ts

import { Component } from '@angular/core'; 
import { NavController, AlertController } from 'ionic-angular'; 
import { Validators, FormGroup, FormControl } from '@angular/forms'; 

import { Http, Headers } from '@angular/http'; 
import 'rxjs/add/operator/map'; 

@Component({ 
    selector: 'form-page', 
    templateUrl: 'form.html' 
}) 
export class FormLayoutPage { 

    section: string; 

    post_form: any; 

    url: string; 
    headers: Headers; 

    constructor(public nav: NavController, public alertCtrl: AlertController, public http: Http) { 
    this.headers = new Headers(); 
    this.headers.append("Content-Type", "application/x-www-form-urlencoded"); 

    this.section = "post"; 


    this.post_form = new FormGroup({ 
     status: new FormControl('', Validators.required), 
    }); 
    } 

    createStatus(){ 
    console.log(this.post_form.value); 

    this.url = "https://domain.com/mobileREST/poststatus.php"; 

    this.http.post(this.url, this.post_form.value, { headers: this.headers}) 
     .map(res => res.json()) 
     .subscribe(res => { 
     console.log(res); 
     }, 
     err => { 
     console.log(err); 
     }) 
    } 
} 

poststatus.php :

내 코드입니다 enter image description here

여기에서 오류를 찾을 수 있습니다. 도와 주셔서 감사합니다.

답변

6

동일한 문제가있었습니다. 자바 스크립트 객체처럼 POST 매개 변수를 보낼 수 없습니다. URLSearchParams처럼 전달해야합니다. 나는 당신을 위해 그것을 할 함수를 만들었습니다. 객체를 통해 반복하여 URLSearchParam을 만들어 문자열로 반환합니다.

this._http.post(this.url, this._buildParams(params), {headers: this.headers}); 
+0

안녕, 여기에 새로운 각 사용자에이 줄을 추가 활용하려면 다음

private _buildParams(params: any) { let urlSearchParams = new URLSearchParams(); for(let key in params){ if(params.hasOwnProperty(key)){ urlSearchParams.append(key, params[key]); } } return urlSearchParams.toString(); } 

그리고는 당신은 HTTP 포스트를 호출합니다. private 변수에 _을 왜 사용했는지 설명 할 수 있습니까? _http 및 _buildParams 모두에 필요합니까? – iWillGetBetter

+0

@iWillGetBetter 필요하지 않지만 개인적인 메서드와 변수에 사용되는 규칙 일뿐입니다. –

0

는 게시 된 데이터는 당신의 PHP 파일

// get posted data 
$data = json_decode(file_get_contents("php://input"));