我正在尝试使用名为Chart.JS的JS库创建测试自动化结果仪表板。我希望随着时间的推移显示一个条形图,显示通过的测试总数和&失败。
为此,我做了以下事情:
现在,我对这里正确的事物流动感到困惑。根据我的阅读,下一步应该是使用JavaScript来调用AJAX函数并告诉它要查看哪个PHP文件名(运行MySQL查询的那个),这将实时返回数据(没有屏幕)刷新)。在HTML文件中,我应该等待JavaScript返回该信息,最后一步是实际绘制图形。
jQuery在哪里发挥作用?我可以将我的AJAX调用放入我的php文件中,这会使查询到数据库吗?
我正在考虑通过首先将虚拟数据插入数据库并检查结果是否通过localhost实时显示在我的PHP文件上来确保AJAX调用正常工作。我在想下一步是将我的$ query-> fetch()中的所有数据存储到两个不同的数组中(一个用于传递测试,一个用于测试失败),然后以某种方式从我的HTML文件访问该数组它调用Chart.JS并将该数据粘贴到绘制条形图函数中?
答案 0 :(得分:1)
您不必使用jQuery。这个JavaScript库包含许多函数来简化AJAX调用和访问DOM,尽管some would argue浏览器API的融合使得这些日子不那么必要。然而,它仍然很受欢迎。
您的第一个任务可能是在页面加载时启动AJAX操作。您可以通过将此JavaScript直接添加到页面开始,但是一旦您的逻辑工作,您可能希望将其添加为缩小的资产。
function ajax() {
// @todo Add your ajax logic in here
}
// Load the AJAX data into the chart as soon as the DOM is ready
$(document).on('ready', function() {
ajax();
});
使用返回JSON的get
操作执行读取操作是很常见的,getJSON
可以正常工作。添加此逻辑代替上面的@todo
评论。
之后,您可能希望每隔60秒定期刷新一次数据。你可以这样做:
setInterval(60 * 1000, ajax);
请注意,间隔计时器的工作时间为毫秒,因此需要乘以1000。
上面的一个缺点是,如果您期望大量用户,或者希望将间隔缩小到非常小的值,您的Web服务器将处理大量冗余请求(因为大多数调用将导致否屏幕改变)。因此,在这里使用AJAX的可扩展性不高。
更好的方法是配置服务器以使用Web套接字将更新推送到浏览器。但是,这需要一种单独的Web服务器,因此我可能不会为您推荐它。