无法弄清楚这个jQuery代码是如何工作的
本文关键字:何工作 工作 弄清楚 代码 jQuery | 更新日期: 2023-09-27 18:22:18
因此,有一台相机每隔几秒钟拍摄一次图像,并将这些新图像和新文件名存储在服务器上。当向"mypage"发出请求时,服务器端会加载最新的图像并在响应中返回。随后用这个jQuery代码刷新的图像:
(function($) {
$(function() {
var refreshInterval = 5; // Number of seconds between image refreshes
$('#deskshare-grid img').each(function() {
$(this).data('src', $(this).attr('src'));
});
function refreshImages() {
$.get('?r=' + Math.random(), function(response) {
$('#deskshare-grid img').each(function(index) {
$(this).attr('src', $(response).find('#deskshare-grid img').eq(index).attr('src'));
});
setTimeout(refreshImages, refreshInterval * 1000);
});
}
setTimeout(refreshImages, refreshInterval * 1000);
});
})(jQuery);
我分享的jQuery代码是有效的,这很好,我没有写代码,我想知道它是如何工作的。
我一直在思考这样一个事实,即有人请求该页面,最近的图像是使用C#在服务器上检索到的,这些图像包含在响应中。创建较新的图像时,它会有一个新的文件名。
jQuery如何为客户端不知道的文件名刷新照片?
特别是这部分代码让我感到困惑:
$.get('?r=' + Math.random(), function(response) {
这个$.get的url请求是什么?我看到F12工具的网络选项卡显示了新的图像响应,但我不明白如何使用jQuery请求具有不同文件名的图像。
更新
公认的答案是正确的,但我想详细说明。这个jQuery再次请求整个页面。HTML响应包含来自服务器的新图像URL。jQuery用于解析响应,获取最新的图像URL,然后用从响应中解析出的新图像URL更新现有的HTML内容。通过这种方式,尝试只刷新整个页面就不会出现页面闪烁。
它确实将请求发送到同一页面,Math.random()
是为了更容易查看每个请求。当您向?
提出请求时,这是同一页。
这个$.get的url请求是什么?
$.get中的第一个参数是一个相对url。这意味着它试图访问的url将类似于www.yourdomain.com/whatever?r=。
"?"表示查询字符串的开始,"r"表示请求变量的开始,等号后面的是查询本身。在这种特殊情况下,查询只是一个随机生成的数字,它被发送到服务器。在没有看到服务器端代码的情况下,文件名似乎是在客户端生成的,并以这种方式发送到服务器,然后可能用于在服务器端命名文件。
$.get('?r=' + Math.random(), function(response) {
可以是以下两种东西:
- 它更改URL是为了不获取缓存内容
- 服务器端是被要求作为虚拟的还是我们不知道的东西
我建议查看每个5''调用的请求和响应标头。