首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fetch接口时,$_REQUEST获取参数,但不获取$_POST

使用fetch接口时,$_REQUEST获取参数,但不获取$_POST
EN

Stack Overflow用户
提问于 2018-11-22 10:39:09
回答 1查看 374关注 0票数 0

我使用fetch向后端'ajax-admin.php‘发送一个POST请求,然后重定向到我在functions.php中拥有的一个php函数。我决定用'fetch‘api代替xmlHttpRequests。我用fetch做一个post请求,如下所示:

代码语言:javascript
复制
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是否为空:

代码语言:javascript
复制
 if ( isset( $_POST ) && 0 === count($_POST) ) 

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-11-22 11:21:22

url的查询字符串所在的

...

您在这里实际做的是向带有查询字符串的URL发送一个POST请求。查询字符串被解析并放入$_REQUEST$_GET 中,而不管实际使用的方法是什么。但是,$_POST只能填充带有请求正文的实际POST请求

fetch()调用中,指定body: formDataformData可以用这种查询字符串格式表示,也可以用其他方式表示。另请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Body

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53423125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档