我正在使用PHP rest API将数据从JS客户机发布到PHP8服务器。我正在使用JSfetch()
方法。当使用post
时,formdata被发送到PHP的全局$_post中,但是由于我需要更新数据,我不得不使用put
。不知何故,Google Chrome没有将格式数据发送到服务器,我也不知道为什么。有人知道原因吗?
JS: const formData = new FormData(); formData.append('title', 'Hello world'); const options = { method: 'PUT', body: JSON.stringify(formData); cache: 'no-cache', mode: 'cors', credentials: 'same-origin', redirect: 'follow', referrer: 'no-referrer', // Not working either // headers: { // 'Content-Type': 'application/json; charset=UTF-8;' // }, }; fetch('/some/api/v1', options);
PHP 8 server: var_dump($_REQUEST); // NULL
问题不在客户端,而在服务器端。Firefox和Chrome都将数据序列化,并使用以下代码发送:
document.getElementById('myForm').addEventListener('submit', function(e){
e.preventDefault();
let fd = new FormData(this);
fetch('test.php', {method:'PUT', body:fd})
.then(function(response){
response.text().then(function(txt){console.log("Response:"+txt);});
});
});
问题是PHP对put
的支持,它不会自动为您解包数据。您可以从stdin
流中获取它。
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");
while ($data = fread($putdata, 1024)) {
echo $data;
}
答复:
-----------------------------256278305409917102757952731
Content-Disposition: form-data;
name="myText" ffsssssdd
-----------------------------256278305409917102757952731--
如果希望将表单数据作为JSON对象发送,可以使用以下方法:
const serialize_form = form => JSON.stringify(
Array.from(new FormData(form).entries())
.reduce((m, [ key, value ]) => Object.assign(m, { [key]: value }), {})
);
const json = serialize_form(this);
fetch('test.php', {method:'PUT', body:json, headers:{'content-type':'application/json'}})
.then(function(response){
response.text().then(function(txt){console.log("Response:"+txt);});
});
答复:
{"myText":"ghfghfghfg"}
取自此答案的serialize_form
函数
请参阅PHP参考
我正在尝试从Android向我的php服务器提交数据。然而,所有的答案似乎都使用了不推荐使用的ApacheHTTP库。我不想用它,当我试着用的时候,它不起作用。 现在它似乎什么也没做。它似乎连接到web服务器,但服务器不写入任何数据。如果我只是用浏览器访问url,它会写入一个文件。 php代码是 然后在Android studio中,我会在按下按钮后放入所有代码
XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理
我正在开发一个基于云的后端HTTP服务,该服务将公开用于与一些on-prem系统的集成。客户机系统是由外部供应商定制的,它们是带有自己数据库的后端系统。这些系统部署在我们客户的公司中,我们无法访问它们,也无法控制它们。我们向供应商提供我们的API规范,他们实现客户机代码。 我的服务与客户交换的数据格式基于XML,并遵循一定的标准。供应商用不同的编程语言实现他们的客户机系统,随着时间的推移,新的供应
问题内容: 最近5个小时,我一直在尝试将json对象发布到PHP脚本中。我已经阅读了所有文档,似乎代码应该可以,但事实并非如此。发出并接收到请求,但是我无法访问发布的json数据,甚至不知道它是否已正确发送。我不断得到一个空的php数组,而不是json数据。 这是php脚本(test.php) 我正在使用来自https://github.com/pokeb/asi-http- request.gi
我正在尝试用新的Firebase服务向我的android设备发送推送通知。我注册并安装了一个应用程序,同时我把接收通知所需的所有代码都放在了android应用程序中。通过Firebase控制台,我可以向我的应用程序发送一个通知,然后它就会被接收并显示出来。现在我想编写一个java独立服务器,向所有设备发送通知。这是我当前的代码: 这是我从他们的服务器上得到的结果: 不幸的是,简单地移除“to”标记
在行引发异常: 线程“main”javax.net.ssl.SSLHandShaker异常:Sun.Security.Validator.ValidatoreXception:PKIX路径构建失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:无法在Sun.Security.SSL.Alerts.GetSleXception(