您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将JSON数据从Javascript发送到PHP?

将JSON数据从Javascript发送到PHP?

在这里获得了很多信息,所以我想发布我发现的解决方案。

从浏览器上的Javascript获取JSON数据到服务器,然后让PHP成功解析它。

Windows上的浏览器(Firefox)中的Javascript。LAMP服务器作为远程服务器:Ubuntu上的PHP 5.3.2。

1)JSON只是文本。以某种格式的文本,但只是一个文本字符串。

2)在Javascript中,var str_json = JSON.stringify(myObject)给我JSON字符串。

3)我使用Javascript中的AJAX XMLHttpRequest对象将数据发送到服务器:

request= new XMLHttpRequest()
request.open("POST", "JSON_Handler.PHP", true)
request.setRequestHeader("Content-type", "application/json")
request.send(str_json)
[... code to display response ...]

4)在服务器上,PHP代码读取JSON字符串:

$str_json = file_get_contents('PHP://input');

这将读取原始POST数据。$str_json现在包含来自浏览器的确切JSON字符串。

1)如果我想使用"application/x-www-form- urlencoded"请求标头,则需要创建一个标准的POST字符串,"x=y&a=b[etc]"以便在PHP得到它时,可以将其放入$_POST关联数组中。因此,在浏览器中的Javascript中:

var str_json = "json_string=" + (JSON.stringify(myObject))

当我像上述版本1中一样通过AJAX / XMLHttpRequest发送str_json时,PHP现在将能够填充$ _POST数组。

显示内容$_POST['json_string']显示JSON字符串。将$ _POST数组元素上的json_decode()与json字符串一起使用将正确解码该数据并将其放入数组/对象中。

最初,我尝试发送带有application / x-www-form-urlencoded标头的JSON字符串,然后尝试立即从PHP的$ _POST数组中读取它。$ _POST数组始终为空。那是因为它期望格式为yval = xval&[rinse_and_repeat]的数据。它没有找到这样的数据,只有JSON字符串,并且只是将其丢弃了。我检查了请求标头,然后正确发送了POST数据。

同样,如果我使用application / json标头,则无法再次通过$ _POST数组访问发送的数据。如果要使用application / json内容类型标头,则必须通过PHP:// input而不是$ _POST访问PHP中的原始POST数据。

php 2022/1/1 18:14:46 有360人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶