django+echarts+ajax异步+显示优化--基本例子
<div id="echarts-line"></div>
##定义要显示的地方
<script src="/static/js/echarts.min.js"></script>
#加载js
<script>
$(function () {
var server_info;
var myChart = echarts.init(document.getElementById('echarts-line'));
var option = {
title: {
text: '机柜总数'
},
tooltip: {},
legend: {
data:['总数']
},
xAxis: {
data: {{ name | safe }} ##第一次访问页面时,先从后端返回一个最新的数据,这样子就不会需要人们等着更新数据。
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: {{ jq | safe }} ##第一次访问页面时,先从后端返回一个最新的数据
}]
};
myChart.setOption(option, true);
{# myChart.showLoading();#} ## echarts 的显示加载页面
setInterval( function () { ##AJAX去获取数据通过showapi
$.ajax({
type: 'GET',
url: '/jigui/showapi',
dataType: 'json',
success: function (json) {
server_info = eval(json);
}
});
option.xAxis.data = server_info.name; ##赋值
option.series[0].data = server_info.jq;
{# myChart.hideLoading();#} ## echarts 的隐藏加载页面
myChart.setOption(option, true);
}, 2000); ##每隔2秒 获取一次,重新生成值
window.onresize = function () {
myChart.resize(); ##根据页面大小重新定义图形大小
};
});
</script>
@login_required(login_url="/login.html")
def show(request): ## 展示 第一次访问返回一个数据
name_id = models.JiguiInfo.objects.filter(id__gt=0)
name = []
jq = []
for i in name_id:
name.append(i.name)
jq.append(i.jq)
ret = {'name': name, 'jq': jq}
return render(request, 'jigui/show.html',{'name':name,'jq':jq})
@login_required(login_url="/login.html")
def showapi(request): ## 展示 API返回数据
name_id = models.JiguiInfo.objects.filter(id__gt=0)
name = []
jq = []
for i in name_id:
name.append(i.name)
jq.append(i.jq)
ret={'name':name,'jq':jq}
return HttpResponse(json.dumps(ret))
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。