Javascript 生成图像后加载它们
我不熟悉javascript和jquery,似乎无法拼凑出我需要的东西 我想我的网页加载,然后有ajax(或类似的东西),检查每隔几秒钟的一系列图像。这些图像是在背景中渲染的散点图,最终将在my/static/results/目录中生成 我发现defect.js是一种“加载图像的惰性方式”,但我不确定如何将它与每隔几秒钟检查一次是否存在的方法结合使用Javascript 生成图像后加载它们,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我不熟悉javascript和jquery,似乎无法拼凑出我需要的东西 我想我的网页加载,然后有ajax(或类似的东西),检查每隔几秒钟的一系列图像。这些图像是在背景中渲染的散点图,最终将在my/static/results/目录中生成 我发现defect.js是一种“加载图像的惰性方式”,但我不确定如何将它与每隔几秒钟检查一次是否存在的方法结合使用 谢谢你的帮助 我将使用服务器并在websocket消息接收器上添加图像我将使用服务器并在websocket消息接收器上添加图像您正在尝试混合两个概
谢谢你的帮助 我将使用服务器并在websocket消息接收器上添加图像我将使用服务器并在websocket消息接收器上添加图像您正在尝试混合两个概念,延迟加载和服务器请求。延迟加载适用于您知道要加载的图像,但您选择稍后加载(例如,当它们进入视图时)。js就足够了。对于ajax请求间隔,您需要执行以下操作:
[Route("script/getimage")]
public JsonResult GetImage(){
// some code to find images in results folder, and return one
var jsonObject = new
{
imageSrc = "/static/results/img.png"
};
return Json(jsonObject, "application/json; charset=utf-8", JsonRequestBehavior.AllowGet);
}
另一种更简单的方法是,如果您知道映像名称没有更改,则可以将超时设置为只重新加载映像,而无需从服务器请求。像这样(代码未经测试,它包含简单的javascript逻辑)
$(函数(){
var myImage=$(“.myImage”),count=0;
//创建计数器
var点=[];
对于(变量x=1;x<6;x++){
对于(变量y=1;y<6;y++){
push({x:x,y:y});
}
}
myImage.on(“加载”,函数(e){
//获取循环中的下一个x和y,然后重置
如果(计数>=points.length)计数=0;
变量点=点[计数++];
setTimeout(函数(){
获取图像(点);
}, 4000);
});
var getImage=函数(点){
//最好先删除src
myImage.removeAttr(“src”);
myImage.src=“/static/results/samples_“+point.x+”“+point.y+”.png”;
};
//第一次打电话
getImage(点[0]);
});
您尝试混合使用两个概念:延迟加载和服务器请求。延迟加载适用于您知道要加载的图像,但您选择稍后加载(例如,当它们进入视图时)。js就足够了。对于ajax请求间隔,您需要执行以下操作:
[Route("script/getimage")]
public JsonResult GetImage(){
// some code to find images in results folder, and return one
var jsonObject = new
{
imageSrc = "/static/results/img.png"
};
return Json(jsonObject, "application/json; charset=utf-8", JsonRequestBehavior.AllowGet);
}
另一种更简单的方法是,如果您知道映像名称没有更改,则可以将超时设置为只重新加载映像,而无需从服务器请求。像这样(代码未经测试,它包含简单的javascript逻辑)
$(函数(){
var myImage=$(“.myImage”),count=0;
//创建计数器
var点=[];
对于(变量x=1;x<6;x++){
对于(变量y=1;y<6;y++){
push({x:x,y:y});
}
}
myImage.on(“加载”,函数(e){
//获取循环中的下一个x和y,然后重置
如果(计数>=points.length)计数=0;
变量点=点[计数++];
setTimeout(函数(){
获取图像(点);
}, 4000);
});
var getImage=函数(点){
//最好先删除src
myImage.removeAttr(“src”);
myImage.src=“/static/results/samples_“+point.x+”“+point.y+”.png”;
};
//第一次打电话
getImage(点[0]);
});
您的意思是每隔几秒钟从服务器上检查一次吗?另一个网址?或者本地更改,如网页上发生的事件?我希望脚本检查localhost:5000/static/results/img.png或文件位置/static/results/img.png。我想要页面加载的效果,然后片刻之后,图像将在生成时填充到页面上。当前页面请求进入服务器,服务器启动一些计算过程,并在计算完成之前返回网页。然后,最终计算图像,并希望通过javascript将其拉入页面。希望这有帮助。谢谢。你是说每隔几秒钟从服务器上检查一次吗?另一个网址?或者本地更改,如网页上发生的事件?我希望脚本检查localhost:5000/static/results/img.png或文件位置/static/results/img.png。我想要页面加载的效果,然后片刻之后,图像将在生成时填充到页面上。当前页面请求进入服务器,服务器启动一些计算过程,并在计算完成之前返回网页。然后,最终计算图像,并希望通过javascript将其拉入页面。希望这有帮助。谢谢。你介意修改一下更简单的方式吗。我知道我的图像的语法是“samples_x_y.png”,其中x和y是1-5。这个循环会是什么样子?你是说x和y都会改变?都是1到5?那么你呢
$(function(){
var myImage = $(".myimage"), count = 0;
// create counters
var points = [];
for(var x =1; x < 6; x++){
for(var y = 1; y < 6; y++){
points.push({x: x, y: y});
}
}
myImage.on("load", function(e) {
// get the next x and y in loop, then reset
if (count >= points.length) count = 0;
var point = points[count++];
setTimeout(function() {
getImage(point);
}, 4000);
});
var getImage = function(point) {
// better remove src first
myImage.removeAttr("src");
myImage.src = "/static/results/samples_" + point.x + "_" + point.y + ".png";
};
// call first time
getImage(points[0]);
});