前提
Reactの勉強中です。
create react appで作成したフォルダを npm run build し、できたbuildフォルダをドキュメントルートとしてXAMPP上で動かしています。
とりあえず簡単な画面は作成できました。
ドキュメントルート:C:\Users\アカウント名\react_app\build
実現したいこと
私が実現したいのは、そのXAMPP環境にあるreactに書かれているinputタグなどに値を入力し、その値をphpにPOSTし、その値を元にXAMPPのmySQLにアクセスしてDBでなんやかんやしたいという、サーバーサイド側の実装です。Ractとphpをひとつのフォルダなりにまとめるのは難しいのでしょうか?
初心者ですので見当違いな質問でしたらすみません。
jsx(React側について)
POSTする処理は postData に記載しています。
その中ではURLSearchParamsのインスタンスであるparamsを作成し、そのparamsにappendする形でPOSTしたいデータを追加しています。
URLSearchParamsを使用したのはcontent typeをapplication/x-www-form-urlencodedの形式でphpに送信したいと考えたからです。
また、axiosを使ってそのparamsを指定のURLに送るという処理を書いているつもりです。
phpについて
POSTされたデータを受け取って、$_POST[ ]をechoする処理を記載しています。
☆わからない点
通常のHTMLで書かれたformの内容をphpで受け取る時は、HTMLのフォーム内のinputタグのname属性をphpの$_POST[ 'name']のように
指定すると受け取れると思います。URLSearchParamsのappendを利用するとき、phpでどのように受け取ればよいでしょうか?
発生している問題・エラーメッセージ
しかしXAMPP環境でReactの開発をしている方が大変少ないようで、ググってもReact側からどうやってDBにアクセスするのかわかりませんでした。
エラーメッセージ
該当のソースコード
jsx
1 2import { useForm } from 'react-hook-form'; 3import axios from "axios"; 4import React, { useState, useEffect } from 'react'; 5import { Button, Checkbox, Form } from 'semantic-ui-react' 6 7function LoginForm() { 8 const [firstName, setFirstName] = useState(''); 9 const [lastName, setLastName] = useState(''); 10 const [checkbox, setCheckbox] = useState(false); 11 12 const postData = () => { 13 console.log(firstName); 14 // console.log(lastName); 15 // console.log(checkbox); 16 var params = new URLSearchParams(); 17 params.append('param1', firstName); 18 // params.append('param2', {lastName}); 19 // params.append('param3', {checkbox}); 20 axios.post('localhost/MyWeb0711/index.php', params) 21 .then((res) => { 22 console.log(res.data.text); 23 }) 24 .catch((error) => { 25 console.log(error); 26 }); 27 } 28 29 return( 30 <div> 31 <Form className="create-form"> 32 <Form.Field> 33 <label>First Name</label> 34 <input placeholder='First Name' value={firstName} onChange={(e) => setFirstName(e.target.value)}/> 35 </Form.Field> 36 <Form.Field> 37 <label>Last Name</label> 38 <input placeholder='Last Name' value={lastName} onChange={(e) => setLastName(e.target.value)}/> 39 </Form.Field> 40 <Form.Field> 41 <Checkbox label='I agree to the Terms and Conditions' checked={checkbox} onChange={(e) => setCheckbox(!checkbox)}/> 42 </Form.Field> 43 <Button onClick={postData} type='submit'>Submit</Button> 44 </Form> 45</div> 46 ); 47} 48 49export default LoginForm; 50
php
1<?php 2 if(!empty($_POST)){ 3 if(isset($_POST['param1'])){ 4 echo $_POST['param1']; 5 }else{ 6 echo 'name失敗'; 7 } 8 }else{ 9 echo 'post失敗'; 10 } 11?> 12
試したこと
Fetchで試してみる→phpにリクエストが送れていなさそう
axiosで試してみる→上に同じ
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
