我正在通过Javascript调用发布请求,这是它的外观,
function syncDeviceId(deviceID, mod){
var request = new Request('url', {
method: 'POST',
body: JSON.stringify({
uuid: unique_id,
}),
mode: 'cors'
})
fetch(request).then(function(data) {
return
})
Run Code Online (Sandbox Code Playgroud)
我正在尝试重新获得这样的价值观,
<?php
$post['uuid'] = $_POST['uuid'];
?>
Run Code Online (Sandbox Code Playgroud)
返回为空,我如何从PHP的获取后请求中检索值。谢谢
这是因为您没有将Request的主体设置为正确的格式。
https://developer.mozilla.org/zh-CN/docs/Web/API/Request/Request#Parameters
正文:您要添加到请求中的任何正文:这可以是Blob,BufferSource,FormData,URLSearchParams或USVString对象。请注意,使用GET或HEAD方法的请求不能具有主体。
内容类型标头基于设置为的对象body,或基于标头对象中指定的内容类型(如果提供)。
因此,将body设置为JSON字符串将使content-type标头为text/plain。即使将请求的Content-Type设置为该值application/json也没关系,因为PHP默认情况下不知道如何解析传入的JSON请求有效负载(除非它是最近在PHP 7中添加的)。
您可以在客户端做几件事
从您的对象创建一个FormData对象,并将其用作主体,然后multipart/form将使用content-type
var data = {some:"data",even:"more"};
var fd = new FormData();
//very simply, doesn't handle complete objects
for(var i in data){
fd.append(i,data[i]);
}
var req = new Request("url",{
method:"POST",
body:fd,
mode:"cors"
});
Run Code Online (Sandbox Code Playgroud)
创建一个URLSearchParams对象,该对象会将content-type设置为application/x-www-form-urlencoded。注意:URLSearchParams不被广泛支持
//Similar to creating a simple FormData object
var data = {some:"data",even:"more"};
var params = new URLSearchParams();
for(i in data){
params.append(i,data[i]);
}
var req = new Request("url",{
method:"POST",
body:params,
mode:"cors"
});
Run Code Online (Sandbox Code Playgroud)
创建一个查询字符串(例如a=hello&b=world),然后使用Headers对象将Content-Type设置为application/x-form-urlencoded
var data = {some:"data",even:"more"};
var headers = new Headers({
"Content-Type":"application/x-form-urlencoded"
});
var params = [];
for(i in data){
params.push(i + "=" + encodeURIComponent(data[i]));
}
var req = new Request("url",{
method:"POST",
body:params.join("&"),
headers:headers,
mode:"cors"
});
Run Code Online (Sandbox Code Playgroud)
如果您仍然想要发送JSON有效负载而不是执行上述操作,则可以,但是您将必须读取原始请求输入,然后使用json_decode来获取数据
$json = file_get_contents('php://input');
$data = json_decode($json);
Run Code Online (Sandbox Code Playgroud)
egg*_*ers -1
您需要回显您的结果,以便它将在您的请求正文中返回:
<?php
$post['uuid'] = $_POST['uuid'];
echo $post['uuid'];
?>
Run Code Online (Sandbox Code Playgroud)
此外,您似乎需要使用您正在调用的 php 脚本的 url 来实例化您的请求对象:
var request = new Request('my_script.php', { . . .
无论你的 php 脚本在哪里。
| 归档时间: |
|
| 查看次数: |
8521 次 |
| 最近记录: |