私はAJAXを使用してフォームデータを取得し、POSTメソッドを使用してWebサービスに送信しています。私は$a = $_POST["accommodation"]
を使用して、データベース上のデータを変更するときに情報を取得しようとしています。これは、ajaxメソッドがPOST
またはGET
に設定され、Webサービスが
$a = $_GET["accommodation"]
を使用していて、$a = $_POST["accommodation"]
を使用していない場合に機能します。AJAX POST要求はGETのように動作しますか?
JS:
function ajaxrequest()
{
var xhr2 = new XMLHttpRequest();
xhr2.addEventListener ("load", (e) =>
{
var output = ""; // initialise output to blank text
var data = JSON.parse(e.target.responseText);
output = data;
if(e.target.status==201)
{
document.getElementById('response').innerHTML = "Successfuly booked!"
}
else if(e.target.status=404)
{
document.getElementById('response').innerHTML = "Sorry fully booked for this date!"
}
});
var a = document.getElementById("accommodation").value;
var b = document.getElementById("username").value;
var c = document.getElementById("accid").value;
var d = document.getElementById("npeople").value;
var e = document.getElementById("date").value;
xhr2.open("POST" , "task2.php?accommodation=" + a + "&username=" + b + "&accid=" + c + "&npeople=" + d + "&date=" + e);
xhr2.send();
}
PHP
header("Content-type: application/json");
$a = $_POST["accommodation"];
$b = $_POST["npeople"];
$c = $_POST["date"];
$d = $_POST["username"];
$e = $_POST["accid"];
$conn = new PDO ("mysql:host=localhost;dbname=***;", "***", "***");
$result = $conn->query("select * from acc_dates where accid=$e and thedate=$c");
$row = $result->fetch();
if($row["availability"] >= $b)
{
echo json_encode(header("HTTP/1.1 201 Created"));
$result = $conn->query("insert into acc_bookings (accID, thedate, username, npeople) values ($e, $c, '$d', $b)");
$result = $conn->query("update acc_dates set availability = availability + -$b where accid=$e and thedate=$c");
}
else
{
echo json_encode(header("HTTP/1.1 404 Not Found"));
}
は、私は次のことをやってみましたが、まだ作業イマイチ?
xhr2.open("POST" , "task2.php");
xhr2.send("accommodation=" + a + "&username=" + b + "&accid=" + c +
"&npeople=" + d + "&date=" + e);
でも私は使用できません。
これは、実際には「POST」データを送信していないためです。URLのキーと値のペアは常に 'GET'パラメータに変換されます。 'POST'データを送信したい場合は、' send() 'コールにそれを入れる必要があります:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send –
可能な重複[XMLHttpRequestを使用してPOSTデータを送信する](https://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest) –
彼らが言ったこと。そして、あなたは本当に実際に準備されたステートメントと呼ばれるものをチェックアウトする必要があります(あなたのPHPは安全ではありません) –