0

我只想用 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

4

4 回答 4

2

那是因为您尝试访问的站点与您的站点位于不同的域中。

Javascript 具有同源策略,您不能从不同域的网站发出 ajax 请求。

于 2012-11-28T19:50:09.930 回答
1

使用 AJAX 请求远程页面通常是不可能的。正如 chrome 开发者控制台所建议的那样,

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

理论上,使用CORS可以请求远程页面,但是如果在此 api 中启用了 CORS,您会看到

Access-Control-Allow-Origin:*

在响应标头中。

于 2012-11-28T19:51:29.450 回答
0
success: function(data) {

这实际上应该如下吗?您正在使用名为 json 的变量,该变量未声明...

success: function(json) {
于 2012-11-28T19:52:07.163 回答
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);
        }
    });
});
于 2012-11-28T20:53:29.667 回答