javascript php数据,将JavaScript数据从Javascript发送到PHP?

我在这里收到了很多信息,所以我想发布一个我发现的解决方案。

问题:从浏览器上的Javascript,服务器获取JSON数据,并让PHP成功解析它。

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

什么工作(版本1):

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

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

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

request = new XMLHttpRequest()

request.open(“POST”,“JSON_Handler.php”,true)

request.setRequestHeader(“Content-type”,“application / json”)

request.send(str_json)

[…显示响应的代码…]

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

$ str_json = file_get_contents(‘php:// input’);

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

什么工作(版本2):

1)如果我想使用“application / x-www-form-urlencoded”请求头,我需要创建一个标准的POST字符串“x = y& a = b [etc]它可以把它放在$ _POST关联数组中。所以,在JavaScript中的浏览器:

var str_json =“json_string =”(JSON.stringify(myObject))

当我通过AJAX / XMLHttpRequest发送str_json在上面的版本1,PHP现在可以填充$ _POST数组。显示$ _POST [‘json_string’]的内容将显示JSON字符串。在带有json字符串的$ _POST数组元素上使用json_decode()将正确解码该数据并将其放入一个数组/对象中。

我遇到的陷阱:

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

同样,如果我使用application / json头,我也不能通过$ _POST数组访问发送的数据。如果要使用application / json内容类型头,那么必须通过php:// input访问PHP中的原始POST数据,而不是使用$ _POST。

参考文献:

1)如何访问PHP中的POST数据:How to access POST data in PHP?

2)应用程序/ json类型的详细信息,带有一些可以转换为JSON字符串并发送到服务器的示例对象:http://www.ietf.org/rfc/rfc4627.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值