サイト作成の勉強中です。
PHPでformをsubmitしてDBを更新するサイトを作成していました。
ただ、これだと、戻るボタンで更新前の画面に戻ってしまいます。
DBを更新するサイトを呼び出したサイトに戻したいと思い、ajaxを使ってPOSTしたらどうなるのだろうと思い、挑戦していました。
しかし、jsでPOSTのロジックには入っているものの、PHPの更新部分には入っていないようです。どこがいけないのでしょうか?
具体的には以下のプログラムで、
click
done
とconsoleに表示されますが、
POSTとはvar_dumpされません。
index.php
1<?php 2 3ini_set('display_errors', 1 ); 4error_reporting(E_ALL); 5 6require_once(__DIR__ . "/../../app/config.php"); 7 8createToken(); 9 10$pdo = getPdoInstance(); 11 12if ($_SERVER['REQUEST_METHOD'] === 'POST') { 13 var_dump("POST"); 14 15 validateToken(); 16 $action = filter_input(INPUT_POST, 'mode'); 17 18 switch ($action) { 19 case 'save': 20 saveBundle($pdo); 21 break; 22 case 'done': 23 doneBundle($pdo); 24 break; 25 } 26} 27 28$bundle = getBundle($pdo); 29 30?> 31<!DOCTYPE html> 32<html lang="ja"> 33<head> 34 <meta charset="UTF-8"> 35 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 36 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 37 <title>Tools</title> 38 <meta http-equiv="Content-Style-Type" content="text/css"> 39 <link rel="stylesheet" href="css/styles.css"> 40</head> 41<body> 42<main> 43 <input type="button" onclick="location.href='../index.php'" value="<<"> 44 <h1>2F 食堂</h1> 45 <ul> 46 <li class="comment"><label for="f2a4">A4</label><input class="bundle" type="number" name="f2a4" onFocus="this.select();" value=<?= h($bundle->f2a4); ?>><span class="comment_content">未開封2束<span></li> 47 <li><label for="f2a3">A3</label><input class="bundle" type="number" name="f2a3" onFocus="this.select();" value=<?= h($bundle->f2a3); ?>></li> 48 <li><label for="f2b5">B5</label><input class="bundle" type="number" name="f2b5" onFocus="this.select();" value=<?= h($bundle->f2b5); ?>></li> 49 <li><label for="f2b4">B4</label><input class="bundle" type="number" name="f2b4" onFocus="this.select();" value=<?= h($bundle->f2b4); ?>></li> 50 </ul> 51 <h1>3F 会議室</h1> 52 <ul> 53 <li><label for="f3a4">A4</label><input class="bundle" type="number" name="f3a4" onFocus="this.select();" value=<?= h($bundle->f3a4); ?>></li> 54 <li><label for="f3a3">A3</label><input class="bundle" type="number" name="f3a3" onFocus="this.select();" value=<?= h($bundle->f3a3); ?>></li> 55 <li><label for="f3b5">B5</label><input class="bundle" type="number" name="f3b5" onFocus="this.select();" value=<?= h($bundle->f3b5); ?>></li> 56 <li><label for="f3b4">B4</label><input class="bundle" type="number" name="f3b4" onFocus="this.select();" value=<?= h($bundle->f3b4); ?>></li> 57 </ul> 58 <button id="save">save</button> 59 <button id="done">done</button> 60 <input type="hidden" name="token" value="<?= h($_SESSION['token']); ?>"> 61</main> 62</body> 63<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script> 64<script> 65 $(function(){ 66 $("#save").on("click", function(event){ 67 console.log("click"); 68 $.ajax({ 69 type: "POST", 70 url: "", 71 data: { "mode" : 'save' } 72 }).done(function(data){ 73 console.log("done"); 74 }).fail(function(XMLHttpRequest, status, e){ 75 console.log("fail"); 76 }); 77 }); 78 }); 79</script> 80</html>

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/02 01:25
2023/01/02 01:50