I want to retrieve the api data from timezone api by clicking the submit button, for the first table row. Unfortunetly it is showing an error message whenever I visit the url link http://localhost/task/geonamesExample/libs/php/getTimezone.php?lang=en&country=GB. to see the error (even when I try it without going to the link).
I expect it to return a value of latitude once I click on the submit, and it's suppose to display in the last row.
I tried deleting geonames a couple, I've tried using var_dump($decode).
Moreover this is the error message I keep getting
Warning: Undefined array key "geonames" in /Applications/XAMPP/xamppfiles/htdocs/task/geonamesExample/libs/php/getTimezone.php on line 25
{"status":{"code":"200","name":"ok","description":"success","returnedIn":"98 ms"},"data":null}
index.html:
<!doctype html><html lang="en"><head><link rel="stylesheet" href="style.css"><meta charset="utf-8"><title>AJAX/PHP/CURL/JSON example</title><meta name="description" content="AJAX/PHP/CURL/JSON example"><meta name="author" content="Paddy Evans"></head><body><select id="selCountry"><option value="GB">Great Britain</option><option value="FR">France</option><option value="DE">Germany</option><option value="US">USA</option></select><select id="selLanguage"><option value="en">English</option><option value="fr">Francais</option><option value="de">Deutsche</option></select><button id="btnRun">Run</button><br><br><div id="divResults"><table><tr><td> API name</td><td> API description</td><td></td></tr><tr><td> 1.PostalCodeLookup</td><td> Timezone:</td><td><select id="selCountry2"><option value="47.01">47.01</option></select></td><td><button id="btnRun_2">Submit</button></td></tr><tr><td> 2.Weather</td><td> description</td><td><button type="submit">Submit</button></td></tr><tr><td></td><td> description</td><td><button type="submit">Submit</button></td></tr><tr><td align="right"> Continent: </td><td id="txtContinent"></td></tr><tr><td align="right"> Capital: </td><td id="txtCapital"></td></tr><tr><td align="right"> Languages: </td><td id="txtLanguages"></td></tr><tr><td align="right"> Population: </td><td id="txtPopulation"></td></tr><tr><td align="right"> Area (km<sup>2</sup>): </td><td id="txtArea"></td></tr><tr><td align="right"> Latitude:</td><td id="txtLatitude"></td></tr></table></div><script type="application/javascript" src="libs/js/jquery-2.2.3.min.js"></script><script type="application/javascript" src="libs/js/script.js"></script></body></html>
script.js:
$('#btnRun').click(function() { $.ajax({ url: "libs/php/getCountryInfo.php", type: 'POST', dataType: 'json', data: { country: $('#selCountry').val(), lang: $('#selLanguage').val() }, success: function(result) { console.log(JSON.stringify(result)); if (result.status.name == "ok") { $('#txtContinent').html(result['data'][0]['continent']); $('#txtCapital').html(result['data'][0]['capital']); $('#txtLanguages').html(result['data'][0]['languages']); $('#txtPopulation').html(result['data'][0]['population']); $('#txtArea').html(result['data'][0]['areaInSqKm']); } }, error: function(jqXHR, textStatus, errorThrown) { // your error code } }); }); $('#btnRun_2').click(function() { $.ajax({ url: "libs/php/getTimeZone.php", type: 'POST', dataType: 'json', data: { country: $('#selCountry2').val(), lang: $('#selLanguage2').val() }, success: function(result) { console.log(JSON.stringify(result)); if (result.status.name == "ok") { $('#txtLatitude').html(result['data'][0]['lat']); $('#txtLongitude').html(result['data'][0]['lng']); $('#Timezone').html(result['data'][0]['timezone']); } }, error: function(jqXHR, textStatus, errorThrown) { // your error code } }); });
getTimezone.php
<?php ini_set('display_errors', 'On'); error_reporting(E_ALL); $executionStartTime = microtime(true); $url='http://api.geonames.org/timezoneJSON?formatted=true&lat=' . $_REQUEST['lang'] . '&country=' . $_REQUEST['country'] . '&username=adeyinka_25'; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,$url); $result=curl_exec($ch); curl_close($ch); $decode = json_decode($result,true); $output['status']['code'] = "200"; $output['status']['name'] = "ok"; $output['status']['description'] = "success"; $output['status']['returnedIn'] = intval((microtime(true) - $executionStartTime) * 1000) . " ms"; $output['data'] = $decode['geonames']; header('Content-Type: application/json; charset=UTF-8'); echo json_encode($output); ?>