トッカンソフトウェア

Angular Ajax

今回はHttpクライアントを使用してAjax通信を行ってみます。

Angular CLIの続きからやるので、環境がない場合、そちらを参考に環境構築してください。

またサーバ側はPHPでテストプログラムを作成しました。環境がなければこちらを参考に環境構築して下さい。
jQueryでも同じようなソースを書いてみました。こちらこちらを参照下さい。


クライアント側ソースファイル

src\app\app.module.ts

HttpClientModuleを追加します。
				
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }


			

src\app\app.component.ts

HttpClientでPOST通信をおこないます
	
				

import { Component } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
    selector: 'app-root',
    template:
        `<input #hello placeholder="ここに何か入力して下さい。" />
        <button (click)="update(hello.value)">表示</button>
        <h1>{{message}}</h1>`
})
export class AppComponent {
    message = "ここに表示されます。";

    constructor(private http: HttpClient) { }

    private show(obj: any) {
        if (obj.ret) {
            this.message = "OK:" + obj.str;
        } else {
            this.message = "NG:" + obj.str;
        }
    }

    update(value: string) {

        let arg = { str1: value };

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

        this.http.post('http://localhost/ajax3.php'
            , JSON.stringify(arg)
            , httpOptions)
            .subscribe(obj => this.show(obj),
                error => this.message = error.message);
    }
}

			

サーバ側ソースファイル

ajax3.php

別途、Webサーバを立てて下さい。
				
<?php

class Cls {
	var $ret;
	var $str;
}

$obj = new Cls();

//送信データを取得
$json = file_get_contents("php://input");

//JSONから連想配列に変換
$data = json_decode($json, true);

if (count(is_countable($data)?$data:[]) == 0 || !isset($data['str1']) || strlen($data['str1']) == 0) {

	$obj -> str = "引数が指定されていません。";
	$obj -> ret = "false";

} else {

	$obj -> str = $data['str1'] . " " . $_SERVER['REQUEST_METHOD'] . "で送信されました";
	$obj -> ret = "true";
	
}

//連想配列からJSONに変換
$result = json_encode($obj, JSON_UNESCAPED_UNICODE);

//処理結果を戻す(出力)
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type');
echo $result;

			


実行イメージ






ページのトップへ戻る