2011-11-20 58 views
0

我開發了PHP中的Web應用程序來列出我硬盤中的所有電影。我發現了一個網站http://www.deanclatworthy.com/imdb/,它提供了IMDB API。現在我需要使用一些參數向這個URL發出請求。但由於這種跨站請求,我無法成功獲得響應。訪問基於URL的API

有什麼方法可以使用這個API?

我正在本地主機上運行我的應用程序。我在Firefox和Chrome中都進行了測試,得到一個Access-Control-Allow-Origin錯誤。

任何幫助表示讚賞。

回答

0

也許代理請求本地服務器端PHP腳本使用套接字,然後將數據中繼到您的JavaScript?

+0

你能解釋一點點。我對此很新。感謝您的回答.. – Vivek

+0

我認爲您正在通過JavaScript提出請求。我建議也許應該把參數傳遞給你的盒子上的php腳本,它使用一個套接字(http://php.net/manual/en/function.fsockopen.php),將來自遠程主機api的響應中繼給JavaScript 。請求 - >本地php腳本 - >遠程主機 - >本地php腳本 - >請求者 – Will

0

您要使用的API支持JSON作爲響應類型。這意味着你可以很容易地從JavaScript中獲取這個API的數據。下面是一個示例代碼(使用jQuery),應該爲你工作 -

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-latest.js"></script> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      function imdbapi(data){ 
        var items = []; 
        $.each(data, function(key, val) { 
        items.push('<li>' + key + "=>" + val + '</li>'); 
        }); 

        $('<ul/>', { 
        'class': 'my-new-list', 
        html: items.join('') 
        }).appendTo('body'); 
      } 

      $(document).ready(function(){ 
       $.ajax({ 
        url: 'http://www.deanclatworthy.com/imdb/?q=Star+Trek&type=jsonp', 
        dataType: 'jsonp' 
       }); 
      }); 
     </script> 
    </body> 
</html> 
+0

問題是,瀏覽器限制跨域訪問http請求。你有沒有嘗試從本地主機的腳本從deanclatworthy.com獲取數據?如果不嘗試併發布你的答覆。 – Vivek

+0

似乎你沒有嘗試腳本。是的,它可以從你的瀏覽器中運行。您錯過了$ .ajax中的「dataType:jsonp」,這會強制跨瀏覽器JSON請求。提供一段代碼片段。 – avlesh