我在閱讀 JavaScript 高級程序設計 (第 4 版),
裡面介紹到用 fetch() 發送 JSON 數據,
書中程式碼如下:
let payload = JSON.stringify(
{
foo: 'bar'
}
);
let jsonHeders = new Headers(
{
'Content-Type': 'application/json'
}
);
fetch(
'/send-me-json',
{
method: 'POST',
body: payload,
headers: jsonHeders
}
);
這個例子我有2個地方不了解:
他在 url 參數的地方,
只有寫 '/send-me-json',
沒有寫附檔名,我查看主控台都是顯示 404 (Not Found),
必須改成加上副檔名才行 '/send-me-json.php',
那書中不寫副檔名,是在什麼情況下可以呢?
我在 send-me-json.php 檔案內,
要如何用 PHP 接收傳來的數據呢?
謝謝!
如果伺服器有開啟網址轉換,就不需要副檔名。
以 Apache 為例,您必須開啟 mod_rewrite
才能使用網址轉換。
您可以參考這篇文章的說明。
對於路徑,書中的 /send-me-json
是資料夾;
對於伺服器,書中的 /send-me-json
可能是指向 /send-me-json/index.php
或其他符合網址轉換條件的檔案。
簡而言之,/send-me-json
是導向至 /send-me-json/index.php
並開啟檔案,/send-me-json.php
則是直接開啟檔案,沒有導向行為。
傳送請求,可以在 PHP 使用 $GET
和 $POST
取得傳送的資料。
如果要取得特定的資料,就在後方加上屬性名稱即可:
const form = new FormData();
const init = { method: 'POST', body: form };
form.append('foo', 'bar');
fetch('/send-me-json.php', init)
.then(response => response.text())
.then(data => console.log(data)); // Log: 'bar'
<?php
if (isset($_POST['foo'])) echo $_POST['foo'];
?>
希望這些對您能有幫助。