2011-11-20 70 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