2012-11-28 50 views
0

我只是想用jquery做一个简单的请求,但它吓坏了不起作用。 我不知道为什么。你能说我做错了吗?Ajax,api网站的jquery请求

http://jsfiddle.net/k6uJn/

有代码。

$(document).ready(function() { 
$.ajax({ 
    type: "GET", 
    url: "http://api.asdasdasdsdsad.com", 
    timeout: 5000, 
    dataType: "json", 
    success: function(data) { 
     $.each(json, function(i, item) { 
      $('.galleryThreeColumnList photoSwipe').append('<li><a href="' + item.photo + '"><img src="' + item.thumbnail + '" alt="' + item.id + '" /></a></li>') 
     }); 
    }, 
    error: function(data) { 
     console.log(data); 
    } 
}); 

});

Greez Edocsyl

+0

检查错误控制台。这是一个CORS问题。您无法轻松地在域之间进行AJAX调用。 *起源http://fiddle.jshell.net不被Access-Control-Allow-Origin允许* – ahren

回答

2

那是因为你试图访问该网站是比你不同的域。

Javascript有一个Same origin policy你不能从一个不同的域上的网站发出ajax请求。

+0

但是我用Mozilla Firefox在本地尝试了它,它也不会工作。 – Edocsyl

+0

你本地的'http:// localhost /'和api'http:// api.elublu.com'是2个不同的域 – Ibu

1

使用AJAX来请求远程页面通常是不可能的。由于Chrome开发者控制台显示,

XMLHttpRequest cannot load http://api.elublu.com/. Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin. 

请求远程页面在理论上可能与CORS,但如果CORS已经在这个API被激活,你会看到

Access-Control-Allow-Origin:* 
在响应头

0
success: function(data) { 

实际上应该如下所示?您正在使用的变量称为JSON进一步下降,这不宣...

success: function(json) { 
+0

是的,我编辑但仍然不工作.. – Edocsyl

+0

是的,可惜其他答案也是有效的! –

+0

明白了,错过了一个逗号 – Edocsyl

0

像很多他们已经提到它是可能会造成该问题的跨域调用。

您可以使用JSONP不具有同源策略的限制(不知道这虽然符合您的要求)

试试这个:

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "http://api.asdasdasdsdsad.com", 
     timeout: 5000, 
     dataType: "jsonp", 
     success: function(data){ 
      $.each(data, function(i, item){ 
       $('.galleryThreeColumnList photoSwipe').append('<li><a href="' + item.photo + '"><img src="' + item.thumbnail + '" alt="' + item.id + '" /></a></li>') 
      }); 
     }, 
     error: function(data){ 
      console.log(data); 
     } 
    }); 
});