0
1

More than 3 years have passed since last update.

JavaScriptからPHPのサーバに文字列を引数にしてWebAPIを実行する例

Last updated at Posted at 2021-01-17

クライアント側のhtmlファイル

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<style></style>
</head>
<body>
<input type="text" id="input_message">
<button onclick="PostString()">WebAPI実行</button>
<div id="result">ここにWebAPIの結果が入ります</div>
</body>
</html>

<script>
function PostString()
{
    const xhr = new XMLHttpRequest();

    //http://XXXXXXX.jp/test.php が今回呼び出すWebAPIを記述したphpファイル
    xhr.open('POST', 'http://XXXXXXX.jp/test.php');

    //文字列を引数にしてWebAPIを実行する(日本語も可能です)
    const msg = document.getElementById("input_message").value;
    xhr.send(msg);
    xhr.onreadystatechange = function() 
    {
        if(xhr.readyState === 4 && xhr.status === 200)
        {
            document.getElementById( "result" ).innerHTML = xhr.responseText;
        };
    }
}
</script>

XMLHttpRequestオブジェクトの
sendメソッドでデータをpostして
結果があれば
responseTextプロパティで取得します

サーバー側のphpファイル

test.php
<?php
    echo date("Y/m/d H:i:s") . "</br>";
    echo "送られた文字列は" . "</br>";
    echo file_get_contents("php://input") . "</br>";
    echo "です" . "</br>";
?>

file_get_contents("php://input")でpostされたメタデータが取得できるようです。

注意事項

htmlファイルをWEB上にホスティングせず、PCのローカルディスク上でブラウザで開いて実行しても、うまく動かないようです。

2021/1/23 追記
エラー原因はCORSエラーというものでphpの先頭に

header("Access-Control-Allow-Origin: *");

を追加することで回避できるようです。詳しくはセキュリティに関するものなのでご自身で調査ください。
ただし、別の問題もあることがわかりました。
https:// のサイト(GitHub Pagesなど)から http:// のサイトへのAPIはブロックされてしまいます。
当方は http:// のレンタルサーバー上のphpへWebApiをCallしようとしていたので困ってしまいました。( ノД`)シクシク…

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1