2012-11-28 48 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); 
     } 
    }); 
});