前提
web系の勉強を行っており、jsとphpの連携としてajaxを学び始めました。
jqueryのバージョンは3.6.3, phpのバージョンは8.12, 使用してるDBはpostgesでバージョンは14.6です。
xampp環境で行っております。
実現したいこと
htmlで入力された値をjsで取得し、PHPで値の判定を行う。
この内、『htmlで入寮された値をjsで取得する』『ajaxを使用してPHPに値を渡し戻り値を表示する』に関しては問題なく動作しました。
その後『PHPからPDOでpostgresに接続を行い、DB内のデータと照合し正誤を判定する』という処理を行おうとした際に問題が発生しました。
発生している問題・エラーメッセージ
PDOを使用するとPHPからのechoを受け取ることができなくなりました。PDOを使用している行(PHPソースコード内11行目)をコメントアウトすると問題なく動作します。
該当のソースコード
<html>
html
1<head> 2 <meta charset="UTF-8"> 3 <script type="text/javascript" src="jquery-3.6.3.min.js"></script> 4 <script type="text/javascript" src="top.js"></script> 5</head> 6 7<title>system01</title> 8 9<form> 10 <input placeholder="ユーザーID" id="userid"></input><br> 11 <input placeholder="パスワード" id="password"></input><br> 12 <button onclick="login_button()">ログイン</button> 13</form>
javascript
1function login_button(){ 2 let userid = document.getElementById('userid').value; 3 let password = document.getElementById('password').value; 4 let msg; 5 6 jQuery.ajax({ 7 type: 'post', 8 url: 'top.php', 9 data: {'func' : 'login_check', 'argument': userid,password}, 10 success: function(content){ 11 msg = content; 12 alert(msg); 13 }, 14 error: function(content) { 15 alert("通信失敗"); 16 } 17 }); 18}
PHP
1<?php 2$func = $_POST['func']; 3$argument = $_POST['argument']; 4echo $func($argument); 5 6function login_check($userid=NULL,$password=NULL){ 7 try { 8 $dsn = 'pgsql:dbname=postgres host=localhost port=5432'; 9 $user = 'postgres'; 10 $passwords = ''; //こちらpasswordsの間違いです、申し訳ありません 11 $dbh = new PDO($dsn, $user, $passwords); 12 return "正常値"; 13 }catch(PDOException $e){ 14 return "エラー"; 15 } 16}
試したこと
①PDOのエラーではないかと思い、PHPを単体で動かしました。しかし値は「正常値」が返ってきておりPDO接続でエラーが発生しているわけではないと思いました。
②11行目以降が実行されていないのではないかと思い、login_check内returnの前に「file_put_contents()」を記載し、ファイルが作成されるかどうかを調べました。結果としてファイルが作成されており実行していることがわかりました。
③PDOを使用している11行目をコメントアウトするとどうなるのかを調べました。結果として「正常値」というアラートが表示され、echoされた値を受け取っていることがわかりました。

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。