こんにちは。
今日は、Webシステムを作る為の事前調査を下記の構成で実施しました。
■目的
AngularJS(HTML,JavaScript)で記載されたリクエストに対して、PHP(サーバサイド)からレスポンスを返却し
HTMLに表示させる。
データはJSON形式を用いる。
■環境
XAMPP
■利用言語
サーバ
PHP(Ver7.x系)
クライアント
HTML5
AngularJS(1.6系)
1.環境設定
XAMPPをインストール
Apacheのポート切替(利用ポートがSkypeと重複していた為)
Atom Live Server(HTML動作確認用)のインストール
2.コーディング
・index.html
<html ng-app="myApp">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<head>
<!-- vendor -->
<script src="./js/vendor/angular.js"></script>
<!-- original -->
<script src="./js/controller/index.js"></script>
<title>test</title>
</head>
<body ng-controller="IndexController">
<!-- page start -->
データ:{{data}}<br>
名前:{{name}}<br>
性別:{{gender}}<br>
趣味:{{shumi}}<br>
特技:{{tokugi}}<br>
</body>
</html>
・index.js
var app = angular.module('myApp',[]);
app.controller('IndexController',['$scope','$rootScope','$http',function($scope,$rootScope,$http){
$rootScope.serverUrl='http://localhost:8081/blg_server/blg_server.php/';
// http post start
$http.post($rootScope.serverUrl + 'test1'
// ,{headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}}
)
.then(function onSuccess(response){
var data = angular.fromJson(response);
console.table(response);
$scope.data = response;
$scope.name = data.data.name;
$scope.gender = data.data.gender;
$scope.shumi = data.data.detail.shumi;
$scope.tokugi = data.data.detail.tokugi;
});
}]);
・サーバのphpファイル
<?php
// CROSS ORIGIN
if (array_key_exists('HTTP_ORIGIN', $_SERVER)) {
$http_origin = $_SERVER['HTTP_ORIGIN'];
}
else if (array_key_exists('HTTP_REFERER', $_SERVER)) {
$http_origin = $_SERVER['HTTP_REFERER'];
} else {
$http_origin = $_SERVER['REMOTE_ADDR'];
}
header("Access-Control-Allow-Origin: $http_origin");
// dispatch start
// params parse
$params = array();
if('' != $_SERVER['REQUEST_URI']){
$params = explode('/', $_SERVER['REQUEST_URI']);
}
// param get
$controller='index';
if(0<count($params)){
$controller = $params[3];
}
// dispatch exec
switch ($controller) {
case 'index':
echo 'とっぷ';
break;
case 'test1':
$arr = array(
'name'=>'太郎',
'gender'=>'男',
'detail'=>array(
'shumi'=>'釣り',
'tokugi'=>'野球',
),
);
$json = json_encode($arr
, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
);
echo $json;
break;
case 'test2':
echo 'テスト2';
default:
echo 'その他だよ';
break;
}
?>
3.配置
C:\xampp\htdocs
(phpMyAdminのデフォルトのディレクトリがここらしい)にphpファイルを配置
4.Apacheサーバ起動
5.動作確認
/(phpファイル)/test1を直接叩いた時のレスポンス
■localhost:(設定したポート番号)/(phpファイル)/test1をブラウザで叩く
{ "name": "太郎", "gender": "男", "detail": { "shumi": "釣り", "tokugi": "野球" } }
HTMLファイル上の動作確認
■localhost:(Atom Live Serverで起動したポート番号)/index.html
データ:{"data":{"name":"太郎","gender":"男","detail":{"shumi":"釣り","tokugi":"野球"}},"status":200,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"http://localhost:8081/blg_server/blg_server.php/test1","headers":{"Accept":"application/json, text/plain, /"}},"statusText":"OK","xhrStatus":"complete"}
名前:太郎
性別:男
趣味:釣り
特技:野球
以上の流れで、AngularJS上からPOST通信でリクエストを送り、とりあえずPHP上からレスポンスを返却することが出来ました。