如何修复Form的action为get方法

10 浏览
0 Comments

如何修复Form的action为get方法

我在我的代码中遇到了一些小问题。

基本上,我在我的index.html文件中有一个表单:

页面1的表单如下:

对于这个表单,我想使用OpenWeatherMap API来获取一些天气数据。我的问题是:

我想获取用户在表单中输入的内容,我认为可以使用以下代码获取:

var searchInput = document.getElementById("searchInput");

在这个变量中,我可以存储位置信息。

而且,我希望将这个变量附加到从javascript代码中获取API数据的链接中。

当用户输入,例如:纽约,并点击搜索按钮时,表单应该将其重定向到page2.html,在那里我可以显示天气数据。

如何在page2中显示具有来自page1的位置输入的天气数据?我尝试了很多次但没有成功。

下面是一些Javascript代码:

let units = 'metric';
let searchMethod = 'q';
let searchButton = document.getElementById("searchBtn");
let searchInput = document.getElementById("searchInput");
if (searchButton) {
    searchButton.addEventListener('click', () => {
        let searchTerm = searchInput.value;
        if (searchTerm)
            searchWeather(searchTerm);
    });
}
function searchWeather(searchTerm) {
    fetch(`http://api.openweathermap.org/data/2.5/weather?${searchMethod}=${searchTerm}&APPID=${appId}&units=${units}`).then(result => {
        return result.json();
    }).then(result => {
        init(result);
    })
}
function init(resultFromServer){
    let weatherDescriptionHeader = document.getElementById('weatherDescriptionHeader');
    let temperatureElement = document.getElementById('temperature');
    let humidityElement = document.getElementById('humidity');
    let windSpeedElement = document.getElementById('windSpeed');
    let cityHeader = document.getElementById('cityHeader');
    let weatherIcon = document.getElementById('documentIconImg');
    weatherIcon.src = 'http://openweathermap.org/img/w/' + resultFromServer.weather[0].icon + '.png';
    let resultDescription = resultFromServer.weather[0].description;
    weatherDescriptionHeader.innerText = resultDescription.charAt(0).toUpperCase() + resultDescription.slice(1);
    temperatureElement.innerHTML = Math.floor(resultFromServer.main.temp) + '°' + " C";
    windSpeedElement.innerHTML = 'Winds at ' + Math.floor(resultFromServer.wind.speed) + ' mph';
    cityHeader.innerHTML = resultFromServer.name;
    humidityElement.innerHTML = 'Humidity levels at ' + resultFromServer.main.humidity + '%';
}

这是一些应该获取天气数据的javascript代码。

然后,在page2中,我在HTML中有以下内容:

        


>

我期望在page2中有天气数据,显示在这些div中。

请问有人可以给我建议吗?

谢谢!

0
0 Comments

如何修复使用GET方法的表单操作问题

在page2.html页面上,我们可以简单地提交表单并从URL获取当前表单输入。

在page2.html页面加载时(在您的ajax调用之前),我们可以通过以下方式从URL中获取'searchInput'(位置):


现在,我们可以使用'searchInput'参数进行api调用并获取结果。

0
0 Comments

问题:如何修复使用GET方法的表单操作的问题?

原因:由于页面1中的表单在页面2中不存在,所以需要移除相关代码并进行修复。

解决方法:将以下代码替换原有的代码:

let searchTerm = new URLSearchParams(location.search).get('location');
searchWeather(searchTerm);

说明:当页面1的表单提交时,会加载页面2,URL的格式为`page2.html?location=xxxx`,其中`xxxx`是``的值。`location.search`会得到`?location=xxxx`,使用`URLSearchParams`可以更方便地处理这些参数(尤其是当有多个参数时),而不需要进行拆分、解码等复杂操作。

0