Javascript 复制外部json数据并粘贴到本地json文件中
我的管理界面上有很多小部件,其中之一就是天气。根据我的管理界面的编码方式,它每60秒重新加载一次。对于天气来说,每分钟有太多的api调用。只改变天气小部件的刷新率需要花费很多时间,所以我想如果我每60分钟从openweathermap.org复制一次数据,并将数据放在一个本地json中,我的weatehr小部件就可以访问该json,而不是对外部源进行如此多的api调用,这会更容易 如何使用jquery、javascript或php将如下所示的数据从网站地址复制到本地JSON文件Javascript 复制外部json数据并粘贴到本地json文件中,javascript,php,jquery,json,clone,Javascript,Php,Jquery,Json,Clone,我的管理界面上有很多小部件,其中之一就是天气。根据我的管理界面的编码方式,它每60秒重新加载一次。对于天气来说,每分钟有太多的api调用。只改变天气小部件的刷新率需要花费很多时间,所以我想如果我每60分钟从openweathermap.org复制一次数据,并将数据放在一个本地json中,我的weatehr小部件就可以访问该json,而不是对外部源进行如此多的api调用,这会更容易 如何使用jquery、javascript或php将如下所示的数据从网站地址复制到本地JSON文件 {"coord"
{"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);
}
也许您想使用bookmarklet:
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();
})();
只需在加载后调用它(或在代码中包含加载),并在脚本的url中添加API键…是否要使用javascript编写json文件?请使用angular或react js。@user2181397是从外部源复制数据并将其写入json文件。我怀疑我是否能够使用JS,但我可能能够使用ajax或php。显然,你没有正确阅读我的问题,只是想发布一些东西。我还需要60分钟而不是60秒。你基本上重复了我已经说过的一切。你没有按照我问题中的要求提供适当的解决办法。我会在你的岗位上打旗子!很抱歉,我用一个示例代码更新了我的帖子,用于检索数据并将其存储在一个文件中。该文件是使用提供的代码保存的,但其中没有数据!尝试替换$weather\u data=json\u decode($response);使用$weather_data=$response;由于返回的数据已经是json格式,请参阅更新的代码。此代码通过编译、创建和下载文件来工作。但是如何将文件保存到服务器上的目录中呢?这取决于您使用的浏览器。一种方法是将浏览器的下载文件夹切换到JSON文件所在的文件夹(可能是挂载的)。