Till senaste kommentaren
Detta inlägg är gammalt och kan innehålla inaktuell information.

rätt node anrop i datastrukturen via Ajax

Hej!

Jag använder en plugin för ajax/proxy och lagrar proxyn hos google. Funkar fint, men det jag undrar över är om någon vet hur jag ska skriva noden jag vill åt?

https://api.sl.se/api2/realtimedeparturesv4.json

$.ajax({
  crossOrigin: true,
  url: url,
  success: function(data) {

T ex: console.log(data.result); funkar bra då jag får ut all data i chromes console log. Men om jag vill nå t ex första posten och se "tunnelbanans gröna linje", borde det väl kunna skrivas så här:

data.result.ResponseData.Metros[0].GroupOfLine

Denna väg har jag hittat via postman, men det funkar inte, så därför undrar jag om någon har tips?


Kommentarer

  • Halloj Christian!

    Jag antar att ditt anrop mot https://api.sl.se/api2/realtimedeparturesv4.json också innehåller din nyckel och ett siteid som parametrar för att få fram intressant data och inte bara ett felmeddelande. Gör anropet inte det så kan du hitta ett exempel i dokumentationen om hur anropet kan se ut.

    Svaret man får tillbaka från anropet är en textsträng i JSON-format. För att kunna nå variabler så som du föreslår behöver du först parsa det till ett JSON-objekt. Jag tror att man kan lägga till dataType: 'json' i ajax anropet för att det i success funktionen automatiskt ska parsa resultatet.
    Man kan annars använda JSON.parse() funktionen, t.ex. var returnedData = JSON.parse(data);.

    // Kevin


    Team Trafiklab
  • Hej!
    Tack för svar. Det funkade bra då jag parsade JSON, men jag använde Google Apps som host för Proxy, samt att jag använde en jQuery plugin med namnet AJAX Cross Origin.


    $(function(){
        $.ajax({
            crossOrigin: true,
            url: url,
        })
        .done(successFunction)
        .fail(failFunction)

        function successFunction(data){
            var d = JSON.parse(data.result);
            //console.log(d.ResponseData.Metros[0].DisplayTime);
            var myData = [];
                for(var i = 0; i < 5; ++i){
                    var displayTime = d.ResponseData.Metros[i].DisplayTime;
                        myData.push("<div id='depItems'>" +
                            "<span id='depTime'>" + '' + displayTime + "</span>" +              
                        '</div>');
                    $("#realtimedepartures").html(myData.join(''))
            }
        }
        function failFunction(request, textStatus, errorThrown) {console.log('Funkar ej..' + request + textStatus + errorThrown)}

    });

  • Kul att du fick det att fungera! 😀

    // Kevin
    Team Trafiklab

Kommentera eller skriv ett nytt inlägg

Ditt namn och inlägg kan ses av alla. Din e-post visas aldrig publikt.