Как извлечь значения со страницы JSON API поиска iTunes с помощью PHP? - PullRequest
3 голосов
/ 01 января 2011

Я создаю веб-сайт, для которого требуются современные цены на приложения для iPhone, например, на appshopper, и благодаря gbc здесь, на stackoverflow, я был направлен на использование iTunes Search 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>

Спасибо, я действительно ценю любую помощь, которую кто-либо может предоставить.

Ответы [ 3 ]

3 голосов
/ 01 января 2011

Это должно помочь вам начать.

/ 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, 284910350.

3 голосов
/ 20 июля 2011

Вы должны использовать JSONP . Таким образом, вам не нужно писать какой-либо серверный код.

3 голосов
/ 01 января 2011

Ошибка, которую вы получаете с этим кодом,

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)

Все современные веб-браузеры накладывают ограничение безопасности на сетевые подключения, которое включает в себя вызовы XMLHttpRequest. Это ограничение не позволяет сценарию или приложению устанавливать соединение слюбой веб-сервер, отличный от того, с которого изначально была создана веб-страница (Internet Explorer будет разрешать междоменные запросы, если эта опция включена в настройках) .Если и ваше веб-приложение, и данные XML, которые использует приложение, поступают непосредственно из одного и того жесервер, тогда вы не столкнетесь с этим ограничением.

Что вам нужно сделать, это использовать ваш сервер (PHP) для вызова http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup,, а затем передать эту информациюклиент (JavaScript)

Где вы размещаете свой код? Установлены ли PHP и cURL? Какую ОС вы используете? Я могу помочь вам с этой информацией подробнее об этой проблеме.

...