Unable to load JSON (Javascript)

时间:2016-04-04 16:45:22

标签: javascript jquery json web

I'm trying to load a JSON file by link and then align data (like title, date etc) to variables so I can use them. Right now, I don't care about variables. I just want to alert() them but something seems like I'm doing it wrong, alert returns nothing!

I use JSfidle to run the code. The code is this:

var JSON_unparsed = $.getJSON('http://www.14deftera.gr/feeds/posts/default?orderby=published&alt=json') ;

var JSON = JSON.parse(JSON_unparsed) ;

alert(JSON.feed.entry[0].title.$t) ;

The URL I want to parse is: http://www.14deftera.gr/feeds/posts/default?orderby=published&alt=json

and here you can see the JSON how is structured if that can help you:

JSON structure

2 个答案:

答案 0 :(得分:1)

In addition to adeneo's reply, in your code, JSON_unparsed variable is holding something called (differed or promise object), this object might be holding the data inside it,but you are using the wrong way to pull it out. in order for you to get it out, you need to call (.done()) function, see the below:

var JSON_unparsed = $.getJSON('http://www.14deftera.gr/feeds/posts/default?orderby=published&alt=json').done(function(json){
console.log(json);
console.log(json.feed.entry[0].title.$t);
});

aside from that, if you got an error with something like this:

XMLHttpRequest cannot load http://www.14deftera.gr/feeds/posts/default?orderby=published&alt=json&_=1459788714707. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://stackoverflow.com' is therefore not allowed access.

it means that you are not allowed to call this API/URL from your current domain.

One more thing, if you are using getJSON method, there is no need to parse the returned data, jquery will parse it for you

答案 1 :(得分:1)

You can use JSONP for this:

Update, for better understanding how to work with returned JSON.

var id, title;

$.ajax({
    url: 'http://www.14deftera.gr/feeds/posts/default?orderby=published&alt=json', 
    jsonp: "callback",    
    dataType: "jsonp"  
}).done(function(r){
    // r is returned JSON
    for(var i in r)    
        // for ex ID is this
        id = r[i].id.$t;
        // and title
        title = r[i].title.$t;
        // and so on, check the json, I mean check the browser console by hitting F12, below code will print the whole JSON 
        console.log(r[i]);
});

Codepen link: http://codepen.io/m-dehghani/pen/grXrrp?editors=0010