我使用fetch向后端'ajax-admin.php‘发送一个POST请求,然后重定向到我在functions.php中拥有的一个php函数。我决定用'fetch‘api代替xmlHttpRequests。我用fetch做一个post请求,如下所示:
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) ) 谢谢
发布于 2018-11-22 11:21:22
url的查询字符串所在的
...
您在这里实际做的是向带有查询字符串的URL发送一个POST请求。查询字符串被解析并放入$_REQUEST和$_GET 中,而不管实际使用的方法是什么。但是,$_POST只能填充带有请求正文的实际POST请求。
在fetch()调用中,指定body: formData。formData可以用这种查询字符串格式表示,也可以用其他方式表示。另请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Body
https://stackoverflow.com/questions/53423125
复制相似问题