Javascript 复制外部json数据并粘贴到本地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"

我的管理界面上有很多小部件,其中之一就是天气。根据我的管理界面的编码方式,它每60秒重新加载一次。对于天气来说,每分钟有太多的api调用。只改变天气小部件的刷新率需要花费很多时间,所以我想如果我每60分钟从openweathermap.org复制一次数据,并将数据放在一个本地json中,我的weatehr小部件就可以访问该json,而不是对外部源进行如此多的api调用,这会更容易

如何使用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);
}

也许您想使用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文件所在的文件夹(可能是挂载的)。