PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Friday, October 14, 2022

[FIXED] How to change background image according to result from an api?

 October 14, 2022     axios, javascript     No comments   

Issue

function for changing background image :

function backgroundChange(checkDay) {
  if (checkDay === 0) {
    document.body.style.backgroundImage = "url('night.jpg')";
  } else if (checkDay === 1) {
    document.body.style.backgroundImage = "url('day.jpg')";
  }
}

function for getting result from api
api used is : https://rapidapi.com/weatherapi/api/weatherapi-com/ i have used realtime weather api function for axios(js) straight from above link

const options = {
  method: "GET",
  url: "https://weatherapi-com.p.rapidapi.com/current.json",
  params: { q: "Los angeles" },
  headers: {
    "X-RapidAPI-Key": "API_KEY",
    "X-RapidAPI-Host": "weatherapi-com.p.rapidapi.com"
  }
};



var checkDay;
axios
  .request(options)
  .then(function (response) {
    console.log("-->", response.data.current.is_day);
    checkDay = response.data.current.is_day;
    console.log(checkDay);
  })
  .catch(function (error) {
    console.error(error);
  });

Solution

The same code you provided is working for me. Please check that you have some component(and style attached to it) set that overlap body completely.

Here is what I tried, Just change API_key and it will work:

function getWeatherInfo() {
  var location = document.getElementById("location").value;
  var options = {
    method: "GET",
    url: "https://weatherapi-com.p.rapidapi.com/current.json",
    params: { q: location },
    headers: {
      "X-RapidAPI-Key": "API_Key",
      "X-RapidAPI-Host": "weatherapi-com.p.rapidapi.com",
    },
  };
  console.log(options);
  var checkDay;

  axios
    .request(options)
    .then(function (response) {
      console.log("-->", response.data.current.is_day);
      checkDay = response.data.current.is_day;
      console.log(checkDay);
      document.getElementById("results").innerHTML = JSON.stringify(response);
      if (checkDay === 0) {
        document.body.style.backgroundImage = "url('night.jpg')";
      } else if (checkDay === 1) {
        document.body.style.backgroundImage = "url('day.jpg')";
      }
    })
    .catch(function (error) {
      console.error(error);
    });
}
body{
    background-color: lightseagreen;
}

#results{
    height:600px;
    width:100%;
    background-color: white;
}
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="style.css">
  <script src="getWeather.js"></script>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>

<body>
  <h1>Weather</h1>
  <input id="location" type="text" value="Los Angeles" placeholder="enter location here">
  <button onclick="getWeatherInfo()">Get Weather Info</button>
  <main>
    <code id="results"></code>
  </main>
</body>

</html>



Answered By - Denish Patel
Answer Checked By - Gilberto Lyons (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing