复制外部json数据并粘贴到本地json文件
问题描述:
我的管理界面上有一些小部件,其中之一就是天气。基于我的管理界面是如何编码的,它每60秒重新加载一次。天气情况下,每分钟呼叫的API数太多。仅更改天气小部件刷新率需要花费很多,所以如果我每60分钟从openweathermap.org复制数据并将数据放置在本地json中,可以通过weatehr小部件访问而不是对外部来源进行如此多的API调用。复制外部json数据并粘贴到本地json文件
如何使用jquery,javascript或php从网站地址复制如下所示的数据到本地JSON文件?
{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"base":"cmc stations","main":{"temp":296.2,"pressure":1023,"humidity":69,"temp_min":294.82,"temp_max":297.15},"wind":{"speed":1.5},"clouds":{"all":75},"dt":1473178865,"sys":{"type":1,"id":5091,"message":0.0074,"country":"GB","sunrise":1473139361,"sunset":1473186795},"id":2643743,"name":"London","cod":200}
答
我建议你创建一个运行的每个60秒通过API来获取气象数据的计划任务,然后将数据存储到本地文件和重定向管理界面从文件中读取,而不是API
您可以使用cron作业来创建计划任务,以便从api中检索数据。
这里是一个示例代码,用于使用PHP从api中检索天气数据并将结果存储到文本文件中。
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=79191467e423ba376b1b72529788eeb8",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
$weather_data = ($response);
// save $weather_data to local file
$file = 'weather_data.txt';
// Write the contents to the file
file_put_contents($file, $weather_data);
}
答
也许你想使用书签:
javascript:(function() {
function httpGet()
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var theUrl = "http://api.openweathermap.org/data/2.5/weather?q=London";
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
saveTextAsFile(xmlhttp.responseText);
};
};
xmlhttp.open("GET", theUrl, false);
xmlhttp.send();
}
function saveTextAsFile(textToSave)
{
var textToSaveAsBlob = new Blob([textToSave], {type:"text/plain"});
var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob);
var fileNameToSaveAs = "weather.json";
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
downloadLink.href = textToSaveAsURL;
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
downloadLink.click();
}
function destroyClickedElement(event)
{
document.body.removeChild(event.target);
}
httpGet();
})();
只需调用它装载http://api.openweathermap.org后(或包括在代码加载吧..),并添加脚本的网址您的API密钥。 ..
你的意思是用javascript编写一个json文件吗? – brk
使用角度或对其作出反应。 –
@ user2181397是从外部源复制数据并将其写入json文件。我怀疑我能够使用JS,但我可能能够使用Ajax或PHP。 – Nxlevel