前提・実現したいこと
fetchでデータベース登録用のPHPファイルを呼び出し、その結果をもとにメッセージを表示したいのですが、
ローカルサーバーではエラー、WEBサーバーでは正常にレスポンスが返ってきています。
WEBサーバーにてPHP側からレスポンスをエラーで返してみましたが、失敗にならなかったのでそもそも処理が通っていないようです。
javascript側からと、PHP側からそれぞれ他に必要なコーディングがあるのでしょうか?
発生している問題・エラーメッセージ
ローカルで実行した際のF12で確認できるエラーメッセージ
Failed to load resource: net::ERR_FAILED
該当のソースコード
shift.php
javascript
1: 2 3 <script > 4 function editSchedule() 5 { 6 var destinyid = document.getElementById('destinyid').value; 7 if(!window.confirm(destinyid + 'さんで登録しますか?')) 8 { 9 return; 10 } 11 12 fetch('./lib/registShift.php', { // ローカルだとここでエラー 13 method: 'POST', 14 header : { 15 'content-type': 'application/json' 16 }, 17 body: JSON.stringify({ 18 destinyid: destinyid, 19 schedule1: document.getElementById('RadioSchedule1').checked, 20 schedule2: document.getElementById('RadioSchedule2').checked, 21 schedule3: document.getElementById('RadioSchedule3').checked, 22 schedule4: document.getElementById('RadioSchedule4').checked, 23 schedule5: document.getElementById('RadioSchedule5').checked, 24 schedule6: document.getElementById('RadioSchedule6').checked, 25 schedule7: document.getElementById('RadioSchedule7').checked 26 }), 27 }) 28 .then((res)=> { 29 if(res.status==200) { 30 alert('登録完了しました'); 31 window.location.href='./shift.php'; 32 } else { 33 throw new Error(); 34 } 35 }) 36 .catch((e) => { 37 alert('登録に失敗しました'); 38 }); 39 }; 40 </script> 41:
registShift.php
php
1<?php 2 require_once 'MySQL.php'; 3 $post_data = json_decode(file_get_contents('php://input'), true); 4 5 // IDが存在する場合だけ登録 6 $flg = false; 7 $stmt = MySQL::SQLexecuteNoneParams('SELECT * FROM shift'); 8 while ($row = $stmt->fetch()) { 9 if ($post_data['destinyid'] == $row['destinyID']) 10 { 11 $flg = true; 12 break; 13 } 14 } 15 if ($flg == true) { 16 // 日本時間にする 17 ini_set('date.timezone', 'Asia/Tokyo'); 18 // Update 19 $query = 'Update shift SET 20 destinyID=:destinyID, 21 day1=:day1, 22 day2=:day2, 23 day3=:day3, 24 day4=:day4, 25 day5=:day5, 26 day6=:day6, 27 day7=:day7, 28 updatedate=:updatedate 29 WHERE destinyID=:destinyID'; 30 $params = [ 31 'destinyID', $post_data['destinyid'], PDO::PARAM_STR, 32 'day1', $post_data['schedule1'], PDO::PARAM_STR, 33 'day2', $post_data['schedule2'], PDO::PARAM_STR, 34 'day3', $post_data['schedule3'], PDO::PARAM_STR, 35 'day4', $post_data['schedule4'], PDO::PARAM_STR, 36 'day5', $post_data['schedule5'], PDO::PARAM_STR, 37 'day6', $post_data['schedule6'], PDO::PARAM_STR, 38 'day7', $post_data['schedule7'], PDO::PARAM_STR, 39 'updatedate', date('Y/m/d H:i:s'), PDO::PARAM_STR 40 ]; 41 list($stmt, $ret) = MySQL::SQLexecute($query, $params); 42 MyLog::outVal($query, 'query'); 43 if ($ret) 44 { 45 http_response_code(200); 46 exit(); 47 } 48 } 49 http_response_code(500); 50 exit(); 51?>
試したこと
レスポンスコードをエラーで返してみましたが、失敗にならなかったのでそもそも処理が通っていないようです。
registShift.php
PHP
1<?php 2 http_response_code(500); 3 exit(); 4?>
補足情報(FW/ツールのバージョンなど)
ローカルサーバーのPHP:8.0.10
WEBサーバー(レンタルサーバーXFREE)のPHP:7.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/11/04 12:14