来自api站点的Ajax,jquery请求

时间:2012-11-28 19:48:03

标签: jquery html ajax json jsfiddle

我只是想用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 个答案:

答案 0 :(得分:2)

这是因为您尝试访问的网站与您的网站不同。

Javascript有Same origin policy,您无法从其他域名的网站发出ajax请求。

答案 1 :(得分: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:*

在响应标题中。

答案 2 :(得分:0)

success: function(data) {

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

success: function(json) {

答案 3 :(得分: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);
        }
    });
});