ajax 呼び出しを使用して、mysql データベースからデータを取得しています。これは私のajax呼び出しです:
$.ajax({
type: "POST",
url: "fetch.php",
data: id,
success: function(msg) {
var record = JSON.parse(msg);
$("#name").val(record.name);
$("#description").val(record.description);
switch(record.category) {
case ("Residential"):
$("#category").val("residential");
break;
case ("Modernisation & Domestic Extensions"):
$("#category").val("modernisation");
break;
case ("Feasibility Layouts"):
$("#category").val("feasibility");
break;
case ("Master Planning"):
$("category").val("master");
break;
default:
$("category").val("");
};
switch(record.featured) {
case ("y"):
$("#featured").val("y");
break;
default:
$("featured").val("n");
};
}
})
これは私のphpファイルです:
<?php
$dbc = mysqli_connect('XX','XX','XX','XX');
$id = $_POST['id'];
if($dbc) {
$row = fetchDataFromRecordWithId($dbc,$id);
}
else {
echo 'Database error';
}
function fetchDataFromRecordWithId($dbc,$id) {
$q = "SELECT * FROM Projects WHERE id = ".$id;
$r = mysqli_query($dbc, $q);
$row = mysqli_fetch_array($r, MYSQLI_ASSOC);
mysqli_close($dbc);
return $row;
}
echo json_encode($row);
?>
すべてが問題なく動作しますが、php ファイルに if ステートメントを追加して POST データがあるかどうかを確認しようとすると、ajax 呼び出しが応答しません。さまざまな方法を試しました:
<?php if(isset($_POST)) { .. my whole php code here .. } ?>
<?php if(!empty($_POST)) { ..my whole php code here .. } ?>
<?php if($_POST) { .. my whole php code here .. } ?>
<?php if($_POST['id']) { .. my whole php code here .. } ?>
しかし、何も機能しません!上記の if ステートメントのいずれかを使用すると、Ajax 呼び出しで json データが返されません。
POST データを確認できず、そのままにしておくことができませんでしたが、適切な方法で行いたいと考えています。
if ステートメントが実行されていないようです (ただし$_POST['id']
、if ステートメントが使用されていないときに値をフェッチできるため、POST データが存在する必要があります)。
if 文も外に出そうとしましたecho json_encode($row)
が、どちらも役に立ちませんでした。何が間違っているのですか?