【问题标题】:How do I extract values from the iTunes Search API JSON page with PHP?如何使用 PHP 从 iTunes Search API JSON 页面中提取值?
【发布时间】:2011-06-02 04:02:51
【问题描述】:

我正在创建一个需要最新 iPhone 应用程序价格的网站,例如在 apphopper 上,感谢 gbc 在 stackoverflow 上我被引导使用 iTunes 搜索 API .我对 PHP 有点熟悉,虽然我不经常练习它,也不熟悉 JSON 的使用或如何从中提取值。我尝试使用这里的教程:http://webhole.net/2009/11/28/how-to-read-json-with-javascript/ 让它工作,虽然我没有运气,没有数据被提取,我也不够熟练,无法弄清楚。我还尝试了许多其他教程,尽管上面的那个似乎最适合我的需要。这将是站点的必要部分,尽管它不是站点的关键组件,因此它不需要非常健壮,它只需要工作即可。如有任何帮助、建议或链接,我将不胜感激。

这是我尝试使用的代码,我不确定这是否无法执行我想要的操作,或者我是否犯了一些我不确定的小错误,因为我只是按照教程进行操作并且不知道我在做什么。

<input type="text" id="query" /><button>search</button><br />
<div id="results">

</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
var url='http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?id=';
var query;
 $('button').click(function(){
  query=$("#query").val();
  $.getJSON(url+query,function(json){
   $.each(json.results,function(i,app){
      $("#results").append('<p>'+app.trackName+'</p>');
   });
  });
 });
});
</script>

谢谢,我非常感谢任何人提供的任何帮助。

【问题讨论】:

    标签: php json itunes


    【解决方案1】:

    您使用该代码得到的错误是,

    XMLHttpRequest cannot load http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?id=s. Origin http://www.bgsisson.com is not allowed by Access-Control-Allow-Origin.
    

    之所以这样说是因为调用的来源与目的地不在同一个域、端口或协议上。更多关于这里的信息 -> (http://developer.yahoo.com/javascript/howto-proxy.html)

    所有现代 Web 浏览器都对网络连接施加了安全限制,其中包括对 XMLHttpRequest 的调用。此限制可防止脚本或应用程序连接到网页最初来源以外的任何 Web 服务器(如果在首选项中启用了该选项,Internet Explorer 将允许跨域请求)。如果您的 Web 应用程序和应用程序使用的 XML 数据都直接来自同一个服务器,那么您不会遇到此限制。

    您需要做的是使用您的服务器 (PHP) 调用 http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup,然后将该信息传递给客户端 (JavaScript)

    您在哪里托管您的代码?是否安装了 PHP 和 cURL?您使用的是什么操作系统?我可以通过这些信息为您提供更多关于这个问题的帮助。

    【讨论】:

    • 我不相信我安装了 cURL,我会检查一下,谢谢。
    • 用这段代码制作一个PHP页面, 然后检查这个页面的字符串'curl'
    • 谢谢,我检查了一下,它说我已经安装了 PHP 和 cURL。我的网络服务器是基于 linux 的。
    【解决方案2】:

    这应该让你开始。

    /wsLookup.php(Apple API 的服务器“代理”)

    <?php
    // the id for the Yelp app
    $id = "284910350";
    if (isset($_GET["id"])) {
        // Get the id from the ajax call
        $id = $_GET["id"];
    }
    // add the id to the url
    $apiUrl = "http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?id=".$id;
    
    // setup the cURL call
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $apiUrl);
    curl_setopt($c, CURLOPT_HEADER, false);
    
    // make the call
    $content = curl_exec($c);
    curl_close($c);
    ?>
    

    /index.html(将通过“代理”访问 Apple API 的客户端代码)

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            var url = 'http://www.bgsisson.com/wsLookup.php';
            $('button').click(function() {
                query = $("#query").val();
    
                $.getJSON(url, {id:query}, function(json) {
    
                    alert("price: " + json.results[0].price);
                    alert("description: " + json.results[0].description);
                    alert("artistName: " + json.results[0].artistName);
    
                    // use html console to inspect the rest of this object
                    console.log(json);
                });
            });
        });
    </script>
    <input type="text" id="query"/>
    <button>search</button>
    <br/>
    
    <div id="results"></div>
    

    如果您想查看,我将这段代码托管在 http://www.bgsisson.com/test.html 上。这是 Yelp 应用的 ID,284910350。

    【讨论】:

    • 非常感谢,这正是我需要帮助的地方。我真的很感激。
    【解决方案3】:

    您应该使用JSONP。这样您就不需要编写任何服务器端代码。

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 2011-01-03
      • 2015-10-31
      • 2017-10-25
      • 1970-01-01
      • 2023-02-16
      • 2023-04-06
      • 2019-04-14
      • 2011-05-23
      相关资源
      最近更新 更多