【问题标题】:Convert String to Json in PHP from GET Request从 GET 请求将字符串转换为 PHP 中的 Json
【发布时间】:2017-11-17 02:36:12
【问题描述】:

当运行 GET 请求时,站点返回一个字符串而不是 JSON,字符串开头带有问号。

?({ "Years": {"min_year":"1941", "max_year":"2017"} });

我尝试在 PHP 中使用 json_encode() 函数。但是,它返回 NULL

结果来自本站:https://www.carqueryapi.com/api/0.3/?callback=?&cmd=getYears

有人知道如何将结果转换为 JSON 吗?谢谢,

【问题讨论】:

  • 因为我想应该是函数名而不是?。这称为jsonp
  • 应该是encode,而不是decode
  • @ficuscr。对不起,这是一个错字。我使用了编码。

标签: php json api


【解决方案1】:

如果从不带callback参数的URL中抓取结果,则可以得到标准的JSON格式。

https://www.carqueryapi.com/api/0.3/?cmd=getYears

{ "Years": {"min_year":"1941", "max_year":"2017"} }

【讨论】:

  • 谢谢,@Ben。你知道为什么回调函数会产生这样的结果吗?
  • 他们提供了实现 JSONP 的方法,这是针对违反同源策略的 Ajax 调用的一种解决方法。由于您正在运行服务器端 php 代码,所以这对您来说不是问题。
【解决方案2】:

这本质上是 JSONP。他们正在返回一个函数 ?() ,其中包含 JSON 结果。您需要删除外部函数,如 has been described previously

他们提供了实现 JSONP 的方法,这是针对违反同源策略的 Ajax 调用的一种解决方法。这个issue and technique is discussed here

话虽如此,Ben 发现没有回调参数可以避免整个问题。

【讨论】:

  • 感谢@gview 的解释。
猜你喜欢
  • 2020-09-22
  • 2015-06-24
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
相关资源
最近更新 更多