如何使用jquery对api进行jsonp调用

我是一般的编程新手,当我打电话给moviedb.org api时,我无法将数据导入我的网络应用程序。 我正在使用jquery,我已阅读所有文档,甚至是食谱,我仍然在努力使这项工作,我还检查了我的谷歌开发工具控制台,它显示调用成功:

Status Code:200 OK [{"id":550,"name":"Fight Club","posters":[{"image":{"type":"poster","size":"original","height":1000,"width":675,"url":"http://hwcdn.themoviedb.org/posters/f8e/4b........ 

这是我的代码:

  $.getJSON("http://api.themoviedb.org/2.1/Movie.getImages/en/json/ed7e2e092ca896037ce13d2bf11a08f1/550&callback=?", function(data){ $.each(data, function(i,item){ $("").attr("src", item.image).appendTo("#images"); }); });  

我想我搞乱了回调function,任何想法都会受到赞赏。 提前致谢!

简而言之,您所服务的服务器似乎不支持JSONP,这是必须存在的服务器端function……而不是。 我也没有在他们的API文档或论坛中看到过。 url应该是?callback=? 因为它是唯一的查询字符串参数,如下所示:

 http://api.themoviedb.org/2.1/Movie.getImages/en/json//550&callback=? 

…但由于服务器不支持,因此仍然无效。 暂时不说:很多时候带有API密钥的东西不会支持JSONP(因为客户端会有密钥),如果API使用密钥来限制访问…其他用于跟踪的其他人可能不会关心。

首先,你必须确保api你的调用支持jsonp(如果不是你会看到json,但你将无法用它做任何事情)。

第二。 如果你没有添加回调名称,那么你留下?callback =? 然后jquery会在你的url末尾添加一个随机数,很可能会导致问题。 它看起来像这样:

 http://someurl.com?callback=140989239 

那只会伤害你。 在标准的jsonp中,您实际上将json插入到标记中。 为此,您需要执行以下操作:

 var headID = document.getElementsByTagName('head')[0]; var newScript = document.createElement('script'); newScript.type = "text/javascript"; newScript.src = "enter your api url that you are calling here with a specified callback" headID.appendChild(newScript); 

此function“发布”调用服务器

 $.post("http://api.themoviedb.org/2.1/Movie.getImages/en/json/ed7e2e092ca896037ce13d2bf11a08f1/550&callback=?", function(data){ //After the server code run, this code is executed with the //information of the response into the parameter 'data' $.each(data, function(i,item){ $("").attr("src", item.image).appendTo("#images"); }); }, json"); 

如您所见,我将相同的“每个”迭代函数放在一起。 我不知道你是否正确地做了,因为我没有执行这段代码。 但我强烈建议您尝试将代码执行到函数(数据)中…并使用警报(…),如下所示:

 $.post("http://api.themoviedb.org/2.1/Movie.getImages/en/json/ed7e2e092ca896037ce13d2bf11a08f1/550&callback=?", function(data){ alert(data); }, "json"); 

有了这个你真的知道什么是“数据”谷。

我希望你能提供帮助。