2011-01-01 1 views
3

appshopper와 같이 최신 iPhone 앱 가격이 필요한 웹 사이트를 만들고 있습니다. 덕분에 gbc 여기에 있습니다. stackoverflow에서 iTunes Search API를 사용하도록 지시했습니다. 저는 PHP를 익숙하게 사용하고 있지만, 자주 연습하지는 않습니다. JSON을 사용하거나 값을 추출하는 방법에 익숙하지 않습니다. 나는 여기에 튜토리얼을 사용하려고 시도했다 : 작동을 얻으려면 http://webhole.net/2009/11/28/how-to-read-json-with-javascript/, 나는 운이 없었지만 아무런 데이터도 가져 오지 않았고 알아낼 정도로 숙련되지 않았다. 나는 또한 위의 하나가 내가 필요한 것에 가장 가까운 것처럼 보였지만 많은 다른 튜토리얼을 시도했다. 이것은 사이트의 핵심 구성 요소는 아니지만 사이트의 필수 부분이 될 것이므로 매우 강력 할 필요는 없으며 단지 작동해야합니다. 도움, 제안 또는 링크에 감사드립니다.PHP를 사용하여 iTunes Search API JSON 페이지에서 값을 추출하려면 어떻게합니까?

여기 내가 사용하려고 시도한 코드가 있습니다. 원하는 코드를 수행 할 수 없는지 또는 튜토리얼을 따라했기 때문에 약간의 오류가 발생했는지 확실하지 않습니다. 내가하고있는 일을 모른다.

<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

시작해야합니다.

/wsLookup.php (애플 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> 

<?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을합니다 ('프록시'를 통해 애플의 API에 액세스하는 클라이언트 코드) 이 코드는 http://www.bgsisson.com/test.html에 호스팅되어 있습니다. 다음은 Yelp 앱의 ID입니다 (284910350).

+0

정말 고마워요.이게 정확히 내가하고 싶은 일 이었어. 정말 감사. – Logan

3

당신이 그 코드를 얻을 오류는,

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 데이터가 모두 동일한 서버에서 직접 제공된 경우이 제한이 적용되지 않습니다. 당신이 http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup로 전화를 걸 수 있도록 서버 (PHP)를 사용한다 할 필요가있는 것들

후 클라이언트 (JavaScript)를 당신이 당신의 코드를 호스팅하는

에 그 정보를 전달? PHP와 cURL이 설치되어 있습니까? 어떤 OS를 사용하고 있습니까? 나는이 정보로이 문제에 관해 더 많은 것을 당신에게 도울 수 있습니다.

+0

저는 cURL이 설치되어 있다고 생각하지 않습니다. 확인해 드리겠습니다. 감사합니다. – Logan

+0

이 코드를 사용하여 PHP 페이지를 만들려면 그런 다음이 페이지에서 'curl'문자열 확인 – sissonb

+0

감사합니다. 확인했는데 PHP와 cURL이 모두 설치되어 있다고 말합니다. 내 웹 서버는 리눅스 기반입니다. – Logan

3

JSONP을 사용해야합니다. 그렇게하면 서버 측 코드를 작성할 필요가 없습니다.