我最近在我的网站上添加了天气预报。脚本如下:
页脚之后:
<script type="text/javascript" src="../js/weather.js"></script>
jQuery:
jQuery(document).ready(function($) {
$.ajax({
type: 'GET',
url: "http://api.worldweatheronline.com/free/v1/weather.ashx?q=Gstaad&format=json&num_of_days=5&key=key",
async: false,
contentType: "application/json",
dataType: 'jsonp',
success: function (response) {
var weather = response.data.weather;
var weekdays = ["SUN", "MON", "TUES", "WED", "THU", "FRI", "SAT"];
var ids = ['#first_', '#second_', '#third_', '#fourth_', '#fifth_'];
for (var i = 0; i < weather.length; i++) {
$(ids[i]+"img").attr('src', "http://swissskiresorts.com/wp-content/themes/swiss-ski-resorts/images/day/"+weather[i].weatherCode+".png");
$(ids[i]+"img").attr('title', weather[i].weatherDesc[0].value);
$(ids[i]+"min").text(weather[i].tempMinC);
$(ids[i]+"max").text(weather[i].tempMaxC);
if(i > 0)
{
var d = new Date(weather[i].date);
$(ids[i]+"day").text(weekdays[d.getDay()]);
}
}
console.dir(response);
},
error: function (e) {
console.log(e.message);
}
}); });
我注意到我的网站加载时间要长得多。
我能做些什么来加快速度吗?也许延迟天气预报
答案 0 :(得分:0)
尝试删除async:false
。
Ajax旨在异步。放async:false
是一个坏主意,并且总是有更好的方法。
让async:false
使所有内容(甚至是GUI更新)等待完成任务。那不是你想要的。
这是一篇非常好的文章:http://javascript.about.com/od/ajax/a/ajaxasyn.htm
答案 1 :(得分:0)
“async:true”将允许在处理ajax请求时运行其他脚本。 这样你的ajax请求就不会再阻止页面加载了。