Ajax + jQuery - 获得成功的响应?

时间:2016-05-23 00:24:18

标签: javascript jquery ajax api

尝试使用jQuery通过API练习提取数据。我看了一些YouTube教程,我基本上只是试图得到一个成功的回复...但我不能让我的生活让它工作..

除了YouTube之外,我还订阅了Codeschool,他们报道了ajax和json,但不幸的是他们没有现实生活中的例子......或者至少还没有。

我使用的API是我的API电影 - http://www.myapifilms.com/imdb.do jsfiddle和代码如下。

我想如果你有自己的代币会更好吗?很多人都提前感谢。

https://jsfiddle.net/oddtbaq6/

var url = 'http://www.myapifilms.com/imdb/idIMDB?title=batman&' + token + '&format=json&language=en-us&aka=0&business=0&seasons=0&seasonYear=0&technical=0&filter=2&exactFilter=0&limit=1&forceYear=0&trailers=0&movieTrivia=0&awards=0&moviePhotos=0&movieVideos=0&actors=0&biography=0&uniqueName=0&filmography=0&bornAndDead=0&starSign=0&actorActress=0&actorTrivia=0&similarMovies=0&adultSearch=0&goofs=0&quotes=0&fullSize=0&companyCredits=0';

$.ajax(url, {
    success: function(data) {
    console.log(data);
  },
  error: function() {
    console.log('error');
  },
  dataType: 'json',
  type: 'GET'
});

控制台错误:

XMLHttpRequest无法加载。

否'访问控制 - 允许 - 来源'标头出现在请求的资源上。

Origin' null'因此不允许访问。

3 个答案:

答案 0 :(得分:0)

当从浏览器发出AJAX请求时,如果目标API启用CORS,浏览器将仅允许发出请求。这样做是出于安全原因,因此如果网站具有私有API,则无法通过来自其自身以外的域的AJAX请求在浏览器中访问该API。例如,除非yourapi.com将其路由指定为可从其他域访问,否则mywebsite.com无法向yourapi.com发出AJAX请求。

我建议找一个流行的公共API,肯定会启用CORS。您还可以运行自己的服务器来提供客户端代码和自己的API。

答案 1 :(得分:0)

您有CORS问题:

但是,您可以使用https://crossorigin.me/服务。

然后,您应该请求:«https://crossorigin.me/http://www.myapifilms.com/imdb/idIMDB?title=batman&' + token + '&format=json&language=en-us&aka=0&business=0&seasons=0&seasonYear=0&technical=0&filter=2&exactFilter=0&limit=1&forceYear=0&trailers=0&movieTrivia=0&awards=0&moviePhotos=0&movieVideos=0&actors=0&biography=0&uniqueName=0&filmography=0&bornAndDead=0&starSign=0&actorActress=0&actorTrivia=0&similarMovies=0&adultSearch=0&goofs=0&quotes=0&fullSize=0&companyCredits=0»。

var url = "https://crossorigin.me/http://www.myapifilms.com/imdb/idIMDB?title=batman&' + token + '&format=json&language=en-us&aka=0&business=0&seasons=0&seasonYear=0&technical=0&filter=2&exactFilter=0&limit=1&forceYear=0&trailers=0&movieTrivia=0&awards=0&moviePhotos=0&movieVideos=0&actors=0&biography=0&uniqueName=0&filmography=0&bornAndDead=0&starSign=0&actorActress=0&actorTrivia=0&similarMovies=0&adultSearch=0&goofs=0&quotes=0&fullSize=0&companyCredits=0";

答案 2 :(得分:0)

请尝试改变这样。

var url = 'http://www.myapifilms.com/imdb/idIMDB?title=batman&' + token + '&format=json&language=en-us&aka=0&business=0&seasons=0&seasonYear=0&technical=0&filter=2&exactFilter=0&limit=1&forceYear=0&trailers=0&movieTrivia=0&awards=0&moviePhotos=0&movieVideos=0&actors=0&biography=0&uniqueName=0&filmography=0&bornAndDead=0&starSign=0&actorActress=0&actorTrivia=0&similarMovies=0&adultSearch=0&goofs=0&quotes=0&fullSize=0&companyCredits=0';

$.ajax({
    url: 'url',
    success: function(data) {
            console.log(data);
         },
    error: function() {
        console.log('error');
    },
    dataType: 'json',
    type: 'GET'
});