所以我有这个代码:
axios({
method: 'post',
url,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: {
json,
type,
}
})
最初我有正常的 axios.post
但我改成这个是因为我认为这可能是一个标题问题。但是,我的 $_REQUEST
和 $_POST
中仍然没有检测到任何内容。但是,它在 file_get_contents("php://input")
中接收数据。
知道有什么问题吗?
编辑
好的,我想我知道出了什么问题。它将它作为一个 json 对象发布,因此它只能在 php://input 中读取。如何在axios中将其改为普通字符串?
最佳答案
来自 the documentation (我没有保留引用 Material 中的链接):
Using application/x-www-form-urlencoded format
By default, axios serializes JavaScript objects to JSON.
PHP 不支持将 JSON 作为填充 $_POST
的数据格式。
它只支持机器可处理的格式natively supported by HTML forms :
- application/x-www-form-urlencoded
- 多部分/表单数据
To send data in the application/x-www-form-urlencoded format instead, you can use one of the following options.
Browser
In a browser, you can use the URLSearchParams API as follows:
var params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/foo', params);
Note that URLSearchParams is not supported by all browsers, but there is a polyfill available (make sure to polyfill the global environment).
Alternatively, you can encode data using the qs library:
var qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));
或者您可以自定义您的 PHP,以便它可以按照 this answer 处理 JSON关于另一个问题。
关于javascript - $_POST 未读取 Axios 发布参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41457181/