【发布时间】:2020-05-15 02:05:23
【问题描述】:
该网页让用户为他们想要继续的远足难度选择一个开始评级,并使用该评级和另一个参数从远足 api 进行 ajax 调用。我需要帮助给他们点击一个数值的星级评分,以便我可以在 ajax 调用中将其设为参数(minstars)。
<div class="column">
<div class="field">
<label class="label">Whats the minimum rating for your hike?</label>
<div class="control">
<div class="select minStar">
<select>
<option>0 stars</option>
<option>⭐</option>
<option>⭐⭐</option>
<option>⭐⭐⭐</option>
<option>⭐⭐⭐⭐</option>
</select>
</div>
</div>
</div>
</div>
</div>
<button class="button is-link" id="submitButton">Search</button>
navigator.geolocation.getCurrentPosition(function (location) {
var maxDistance;
var minLength;
var minStars;
var apiKey = "key=200749192-819757ad274cc592a221c4c70b9c441e";
var i = 0;
var trails;
$("button").on("click", getTrails);
function getTrails(event) {
maxDistance = $(".maxDistance").val();
minLength = $(".minLength").val();
console.log(location.coords.longitude);
console.log($(".minStar").val());
console.log(maxDistance);
console.log(minLength);
var queryURL = "https://www.hikingproject.com/data/get-trails?" +
"lat=" + location.coords.latitude + "&lon=" + location.coords.longitude +
"&maxDistance=" + maxDistance + "&minLength=" + minLength + "&minStars=" + minStars + "&" + apiKey;
event.preventDefault();
$.ajax({
url: queryURL,
method: "GET"
})
.then(function (response) {
trails = response.trails
console.log(queryURL)
$(".name").html("Trail Name: " + response.trails[i].name);
$(".location").html("Location: " + response.trails[i].location);
$(".ascent").text("Ascent: " + response.trails[i].ascent + "ft");
$(".descent").text("Descent: " + response.trails[i].descent + "ft");
$(".length").text("Length: " + response.trails[i].length + "mi");
$(".stars").text("Stars: " + response.trails[i].stars);
parseDifficulty(response.trails[i].difficulty);
i++;
if (i === trails.length) {
i = 0
}
fetchWeather(response.trails[i].location);
});
}
【问题讨论】:
-
首先让我说你应该使用
navigator.geolocation.watchPosition而不是navigator.geolocation.getCurrentPosition,否则浏览器会在每次(烦人)时提示用户他们的位置。只需将position.coords存储在范围比watchPosition循环更高级别的变量中。是的,不要使用location,它是一个可以重定向的神奇窗口属性,因此将其作为参数覆盖是一种不好的做法。确保在change事件上执行 AJAX。当然,您必须执行服务器端代码才能将信息输入数据库。
标签: javascript html ajax dropdown