【Jquery:ajax通信】×【PHP】でfetchできない

ajaxを使用した通信時のエラーについて

予期しないトークン '<'、"「... は有効な JSON ではありません」

とのエラーによりPHPからデータを取得できない状態です。

fetch()から取得しPHPから値を取得したいです。

WHEREありのexecute();→fetch()だとエラーになります。
WHEREなしのquery()→fetchAll()だと成功します。

このエラーの原因と対策方法を知ってる方おりましたら教えて下さい。
サーバーはXserverを使用しています。

現状のコード - Javascript

javascript

1async function X_ajax(type, file_name, db_name, func, data){2 var results;3 await jQuery.ajax({4 5 url: '../php/' + file_name, //送信先PHPファイル6 type: type,7 //POSTするデータ8 data: {9 'func' : func, 10 'db_name' : db_name,11 'data': data 12 }13 }).done(function (data) {//成功時14 results = data;15 }).fail(function (jqXHR, textStatus, errorThrown) {16 // 通信失敗時の処理17 console.log("ajax通信に失敗しました");18 console.log("jqXHR : " + jqXHR.status); // HTTPステータスが取得19 console.log("textStatus : " + textStatus); // タイムアウト、パースエラー20 console.log("errorThrown : " + errorThrown.message); // 例外情報21 });22 return results;23}24 25 var data = {26 "table":"User",27 "id":"WgrywcB4kyfkCeaU"28 };29 var a = await X_ajax("POST", x_php_name, "testdb", "Single_load", data);30 console.log(a);

現状のコード - PHP(今回のエラー)※WHEREあり

PHP

1header('Access-Control-Allow-Origin: *');2header('Content-type: application/json; charset=utf-8');3 4//iniデータからサーバー情報を取得5$ini = parse_ini_file("./database.ini", FALSE);6 7$iddb_name = $ini['id'] . '_' . $_POST['db_name'];8 9$dsn = "mysql:dbname={$iddb_name};host={$ini['host']};charset={$ini['charset']}";10 11//SQL接続12$pdo = new PDO($dsn, $ini ['dbusr'], $ini ['dbpass']);13 14function Single_load($pdo, $data){15 16 try {17 18 $table = $data['table'];19 $id = $data['id'];20 21 global $connect;22 23 // テーブル名24 $sql = "SELECT * FROM $table WHERE Id=:id";25 26 $stmt = $connect->prepare($sql);27 $stmt->bindValue(':id', $id, PDO::PARAM_STR);28 $stmt->execute();29 $row = $stmt->fetch(PDO::FETCH_ASSOC);30 31 return $row['Name'];32 33 34 } catch(PDOException $e) {//エラーの場合35 //echo 'DB接続ERROR: ' . $e->getMessage();36 return false;37 }38}39 40//関数を実行41 $func = $_POST['func'];42 //jsから貰った配列または変数43 $data = $_POST['data'];44 45 //データ配列で返す46 echo json_encode($func($pdo, $data));47 // データベースの接続解除48 $pdo = null;49

エラーコード

jqXHR : 200
xyz.js:52 textStatus : parsererror
xyz.js:53 errorThrown : Unexpected token '<', "
<br />
<b>"... is not valid JSON

現状のコード - PHP(成功しているPHP)※WHEREなし

PHP

1header('Access-Control-Allow-Origin: *');2header('Content-type: application/json; charset=utf-8');3 4//iniデータからサーバー情報を取得5$ini = parse_ini_file("./database.ini", FALSE);6 7$iddb_name = $ini['id'] . '_' . $_POST['db_name'];8 9$dsn = "mysql:dbname={$iddb_name};host={$ini['host']};charset={$ini['charset']}";10 11//SQL接続12$pdo = new PDO($dsn, $ini ['dbusr'], $ini ['dbpass']);13 14//読み込み15function Box_load($pdo, $data){16 17 $table = $data['table'];18 19 try {20 // テーブル名21 $sql = "SELECT * FROM $table";22 23 // SQLの実行:queryメソッドで実行し、変数stmt(statementの略)に結果を入れる24 $stmt = $pdo->query($sql);25 26 // データすべてを取得27 $result = $stmt->fetchAll(PDO::FETCH_ASSOC);28 29 return $result;30 31 } catch(PDOException $e) {//エラーの場合32 //echo 'DB接続ERROR: ' . $e->getMessage();33 return "false";34 }35 36}37 38//関数を実行39 $func = $_POST['func'];40 //jsから貰った配列または変数41 $data = $_POST['data'];42 43 //データ配列で返す44 echo json_encode($func($pdo, $data));45 // データベースの接続解除46 $pdo = null;47

mySQL

イメージ説明
イメージ説明

コメントを投稿

0 コメント