【问题标题】:Consuming JSON with JavaScript and PHP使用 JavaScript 和 PHP 使用 JSON
【发布时间】:2010-11-14 22:32:23
【问题描述】:

2 个简短的问题。我将不胜感激一个答案或指向关于 SO 的已回答问题的指针(我在询问之前进行了搜索:))。

  1. 我想使用TRYNT 的Web 服务之一,它返回一个JSON 对象(例如this one)。我是否正确地推断,如果他们不指定 JSONP,由于跨站点脚本限制,我无法在没有服务器端代理的情况下从客户端使用这些服务?
  2. 好的,所以我尝试实现一个 PHP 代理来使用该服务并将 JSON 返回到 HTML,但发现我的(免费)网络托管服务阻止了 CURL 库。作为一个新手 PHP 开发人员(ASP.Net 是我通常的专长,但我决定是时候进行分支了 :))——我还有哪些其他选择可以从 PHP 中获取 JSON 结果?

感谢任何帮助。

【问题讨论】:

    标签: php web-services json jsonp


    【解决方案1】:

    试试这个:

    $url = 'http://www.trynt.com/symbol-lookup-api/v2/?s=IBM&fo=json&f=0';
    $json = file_get_contents($url);
    $data = json_decode($json);
    

    当然取决于您的服务器配置。值得一试!

    【讨论】:

    • 是的,只要允许 file_get_contents 打开 url(fopen_url 我认为它在 php.ini 中),这应该可以正常工作。
    • 感谢您的回复,但 stream_get_contents 位于“disable_functions”列表中(与 allow_url_fopen、curl 和一长串类似函数一起)——简而言之,看起来我被搞砸了 :(
    【解决方案2】:
    1. 请阅读a related question
    2. 如果 CURL 被阻止,可能其他获取远程内容的方法也会被阻止。如果 allow_url_fopen 在 php.ini 上设置为 true,您可以使用类似 fopen 的函数。另外,您可以尝试opening a socket 到服务器。

    【讨论】:

    • @Nathan: 1. 仅当您也控制服务端时才有用 - 我不这样做:( 2. allow_url_fopen 在 PHP.ini 中被阻止。猜猜我的提供商真的不想要我消费任何东西:(
    • @Traveling Tech Guy,大多数免费提供商阻止它只是因为您必须购买专业计划。 :P(#资本主义)
    【解决方案3】:

    您可以使用 flash 电影(如果需要,可以隐藏,尺寸为 0,0),使用 flash 的 crossdomain.xml 在远程服务器和 javascript 之间进行代理。

    有关该技术的更多信息:http://blog.monstuff.com/archives/000294.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多