Toon posts:

Ervaring met API ?(icm html/json)

Pagina: 1
Acties:

Onderwerpen

Vraag


  • -Marek-
  • Registratie: Mei 2009
  • Laatst online: 16-12-2019
Geachte Lasers,

Hoe implementeer ik een API op mijn website?

Het leek me leuk om bij wijze van test een API op mijn website (HTML) te implementeren.
Nu zijn er public API's van youtube en google maps met een iframe, maar dit is een copy/paste. Dus mijn oog is gevallen op een API van weerlive:

http://weerlive.nl/api/js...ey=demo&locatie=Amsterdam

Kan iemand mij vertellen hoe ik een geedelte van de output op mijn website implementeer.

Uiteraard kan ik ook ergens een widget/iframe ergens opsnorren, maar ik wil graag een gedeelte van deze API output gebruiken.


Het leukst zou natuurlijk zijn met een tekst als: In AMSTERDAM(1) is het op dit moment 34 (2) graden en er is sprake van MOTREGEN(3)

In het voorbeeld hierboven (1) (2) en (3) onderdeel van de output gegenereerd door:

http://weerlive.nl/api/js...ey=demo&locatie=Amsterdam


Ik heb al een paar uur gegoogled en how to guides gelezen, maar kom er niet uit.


Hopelijk kan hier iemand helpen!


Thanks! O-)


/\/\

Beste antwoord (via -Marek- op 23-02-2019 17:32)


  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02 07:48
-Marek- schreef op zondag 10 februari 2019 @ 00:31:
Ik zal t morgen ff “opschonen” zodat t wat leesbaarder is (heb de laptop dichtgeklapt, tijd voor een biertje :-))


Ik loop vast op het feit dat ik geen response krijg op mijn JavaScript in html in het tweede voorbeeld. In het 1e voorbeeld doe ik precies t zelfde en daar gaat t wel goed.

Ik denk dat het komt door dit stuk Vd code:

document.getElementById("output").innerHTML = data.liveweer.0.samenv;


Bedankt voor je snelle antwoord iig!
Array kan je uitlezen met Array[index].

code:
1
data.liveweer.0.samenv


Moet dus zijn

code:
1
data.liveweer[0].samenv

Alle reacties


  • mcDavid
  • Registratie: April 2008
  • Laatst online: 17:48
Waar loop je tegenaan dan? Is er een specifieke foutmelding die je niet snapt? Lukt het je uberhaupt om de JSON in te laden / uit te lezen?

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Pseudo code:
code:
1
2
var data = fetch http://weerlive.nl/api/json-data-10min.php?key=demo&locatie=Amsterdam;
echo data->liveweer[0]->samenv;

Maak je niet druk, dat doet de compressor maar


  • Josk79
  • Registratie: September 2013
  • Laatst online: 20:12
Dit kan op twee manieren:

1 in de browser van de bezoeker (met javascript de json ophalen en ergens in het html document (DOM) injecteren) of
2 op de server (html genereren met PHP of een andere taal).

Welke manier wil je en waar loop je tegenaan?

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 20:36

AW_Bos

Liefhebber van nostalgie... 🕰️

Het formaat van de data is JSON,
Dus kies een programmeertaal waarbij jij je er lekker bij voelt, en Google dan op {programmeertaal} + JSON. En geheid dat je een mooie manual krijgt.

☀️ Goedemorgen zonneschijn! ☀️
☀️Ja, je maakt me zo gelukkig, en door jou voel ik me fijn! ☀️


  • -Marek-
  • Registratie: Mei 2009
  • Laatst online: 16-12-2019
Bedankt voor het delen van jullie expertise/kennis, met behulp van jullie antwoorden/vragen ben ik me weer gaan verdiepen en vooral gaan proberen.

Nu is het gelukt met een andere API:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<body>

<script>
(function() {
  var newXHR = null;

  function sendXHR(type, url, data, callback) {
    newXHR = new XMLHttpRequest() || new window.ActiveXObject("Microsoft.XMLHTTP");
    newXHR.open(type, url, true);
    newXHR.send(data);
    newXHR.onreadystatechange = function() { // Use onreadystatechange instead onload.
      if (this.status === 200 && this.readyState === 4) {
        callback(this.response);
      }
    };
  }

  sendXHR("GET", "https://sourceforge.net/projects/kaais/files/stats/json?start_date=2013-08-18&end_date=2018-04-19", null, function(response) {
    var data = JSON.parse(response);
    document.getElementById("output").innerHTML = data.end_date;
  });

}());
</script>

<div id="container">
  <div id="output">/div>
</div>


</body>
</html>


maar niet met weerlive API:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
<html>
<body>


<script>
(function() {
  var newXHR = null;

  function sendXHR(type, url, data, callback) {
    newXHR = new XMLHttpRequest() || new window.ActiveXObject("Microsoft.XMLHTTP");
    newXHR.open(type, url, true);
    newXHR.send(data);
    newXHR.onreadystatechange = function() { // Use onreadystatechange instead onload.
      if (this.status === 200 && this.readyState === 4) {
        callback(this.response);
      }
    };
  }

  sendXHR("GET", "http://weerlive.nl/api/json-data-10min.php?key=demo&locatie=Amsterdam", null, function(response) 
{var data = JSON.parse(response);document.getElementById("output").innerHTML = data.liveweer.0.verw;});}());
</script>

<div id="container">
  <div id="output">
</div>


</body>
</html>


Kunnen jullie mij in de goede richting wijzen / helpen.

Het loopt volgens mij stuk op de "subwaarden in de weer API

Alvast bedankt!

[Voor 0% gewijzigd door RobIII op 10-02-2019 00:40. Reden: code tags toegevoegd]


  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 20:36

AW_Bos

Liefhebber van nostalgie... 🕰️

@-Marek-
Kan je het tussen [code] en [/code] blokken zetten? Dan is het beter leesbaarder.
En waar loop je op vast? Welk stuk van je code? En wat gebeurt er?

[Voor 4% gewijzigd door AW_Bos op 09-02-2019 23:58]

☀️ Goedemorgen zonneschijn! ☀️
☀️Ja, je maakt me zo gelukkig, en door jou voel ik me fijn! ☀️


  • -Marek-
  • Registratie: Mei 2009
  • Laatst online: 16-12-2019
Ik zal t morgen ff “opschonen” zodat t wat leesbaarder is (heb de laptop dichtgeklapt, tijd voor een biertje :-))


Ik loop vast op het feit dat ik geen response krijg op mijn JavaScript in html in het tweede voorbeeld. In het 1e voorbeeld doe ik precies t zelfde en daar gaat t wel goed.

Ik denk dat het komt door dit stuk Vd code:

code:
1
 document.getElementById("output").innerHTML = data.liveweer.0.samenv;



Bedankt voor je snelle antwoord iig!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 15:25

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

-Marek- schreef op zondag 10 februari 2019 @ 00:31:
Ik zal t morgen ff “opschonen” zodat t wat leesbaarder is (heb de laptop dichtgeklapt, tijd voor een biertje :-))
Dat typen was meer werk dan de code tags toevoegen. Als je wil dat mensen je helpen mag je zelf ook wel een beetje inspanning verrichten.

Verder zou ik eens beginnen met debuggen (Debuggen: Hoe doe ik dat?) en deel dan je bevindingen daarvan met ons. "Het loopt volgens mij stuk" is natuurlijk geen probleembeschrijving (wat doet 't wél en wat doet 't niet?). Ook een mededeling als "Ik heb al een paar uur gegoogled en how to guides gelezen, maar kom er niet uit" heeft geen toegevoegde waarde als je niet verteld waarop je hebt gegoogled (zodat we je kunnen helpen wellicht betere termen te gebruiken in 't vervolg), wat je hebt gevonden (zodat we kunnen meekijken of 't wellicht nuttige of niet-nuttige informatie is), wat je geleerd hebt uit die how-to-guides en daarvan hebt toegepast op je probleem enz. Je moet je realiseren dat we niet over je schouder kunnen meekijken noch in je hoofd kunnen kijken ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • Beste antwoord
  • +1Henk 'm!

  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02 07:48
-Marek- schreef op zondag 10 februari 2019 @ 00:31:
Ik zal t morgen ff “opschonen” zodat t wat leesbaarder is (heb de laptop dichtgeklapt, tijd voor een biertje :-))


Ik loop vast op het feit dat ik geen response krijg op mijn JavaScript in html in het tweede voorbeeld. In het 1e voorbeeld doe ik precies t zelfde en daar gaat t wel goed.

Ik denk dat het komt door dit stuk Vd code:

document.getElementById("output").innerHTML = data.liveweer.0.samenv;


Bedankt voor je snelle antwoord iig!
Array kan je uitlezen met Array[index].

code:
1
data.liveweer.0.samenv


Moet dus zijn

code:
1
data.liveweer[0].samenv

  • RobIII
  • Registratie: December 2001
  • Laatst online: 15:25

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Wil je voortaan proberen iets minder een kant-en-klare oplossing te geven/posten?
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
Ik stond op 't punt @-Marek- te vertellen dat 'ie beide stukken code makkelijk even in een jsfiddle had kunnen plaatsen en dan even in z'n console* had kunnen kijken naar de foutmelding:

Uncaught SyntaxError: Unexpected number op de regel:
{document.getElementById("output").innerHTML = data.liveweer.0.verw;

* Firefox Firebug of Dev.tools / IE F12 Dev.tools / Chrome Dev.tools / Safari Dev.tools

[Voor 41% gewijzigd door RobIII op 10-02-2019 00:53]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • -Marek-
  • Registratie: Mei 2009
  • Laatst online: 16-12-2019
jaaaaaaaaaa! Het is gelukt!

Met jullie hulp, alhoewel het wel ff duurrde voordat ik het gewenste resultaat had, ik had namelijk een grote fout over het hoofd gezien en was aan het debuggen en stond op het punt om een jsfiddle te plaatsen,maaarrr toen zag ik het...


code:
1
 sendXHR("GET", "http://weerlive.nl/api/json-data-10min.php?key=demo&locatie=Amsterdam", null, function(response)


dat moet zijn:


code:
1
 sendXHR("GET", "https://weerlive.nl/api/json-data-10min.php?key=demo&locatie=Amsterdam", null, function(response)


dus https ipv http 8)7


Bedankt voor jullie hulp

(en het stukje opvoeden >:) )

EDIT:

Voor de volledigheid de juiste code is dus:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 <!DOCTYPE html>
<html>

  <body>
    <script>
      (function() {
        var newXHR = null;

        function sendXHR(type, url, data, callback) {
          newXHR = new XMLHttpRequest() || new window.ActiveXObject("Microsoft.XMLHTTP");
          newXHR.open(type, url, true);
          newXHR.send(data);
          newXHR.onreadystatechange = function() { // Use onreadystatechange instead onload.
            if (this.status === 200 && this.readyState === 4) {
              callback(this.response);
            }
          };
        }

        sendXHR("GET", "https://weerlive.nl/api/json-data-10min.php?key=demo&locatie=Amsterdam", null, function(response) {
          var data = JSON.parse(response);
          document.getElementById("output").innerHTML = data.liveweer[0].samenv;
        });
      }());

    </script>

    <div id="container">
      <div id="output">
      </div>


  </body>

</html>

[Voor 44% gewijzigd door -Marek- op 13-02-2019 23:26]

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee