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);
?>