【发布时间】:2018-11-22 02:39:08
【问题描述】:
我正在使用 fetch 向后端“ajax-admin.php”发送一个 POST 请求,然后该请求重定向到我在 functions.php 中的一个 php 函数。 我决定用 'fetch' api 替换 xmlHttpRequests。 我用 fetch 做一个发布请求,如下所示:
fetch(url, {
method: 'POST',
credentials: "include",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
.then(res => res.json())
.then(data => resolve(data)) // we call resolve with the data
.catch(err => reject(err));
});
其中url的查询字符串形式为:action=login&tokend_id=1234
在服务器端,我使用 $_POST 来检索参数“action”和“token_id”的值。 但是我看到的是 $_POST 是空的,而 $_REQUEST 确实有参数。因此,如果我执行 $_POST['token_id'] 会出现错误,因为 $_POST 为空。但是如果我这样做 $_REQUEST['token_id'] ,我会得到那个参数的值。
知道为什么会这样吗? 为什么参数会在 $_REQUEST 而不是 $_POST。
我用这个语句检查了 $_POST 是否为空:
if ( isset( $_POST ) && 0 === count($_POST) )
谢谢
【问题讨论】:
-
REQUEST 同时具有 post 和 get,正如您在 url 中看到的值,使用的是 GET 而不是 POST
-
因为,您正在执行 GET 请求并且不会与 POST 方法交互(反之亦然)。