Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 生成图像后加载它们_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 生成图像后加载它们

Javascript 生成图像后加载它们,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我不熟悉javascript和jquery,似乎无法拼凑出我需要的东西 我想我的网页加载,然后有ajax(或类似的东西),检查每隔几秒钟的一系列图像。这些图像是在背景中渲染的散点图,最终将在my/static/results/目录中生成 我发现defect.js是一种“加载图像的惰性方式”,但我不确定如何将它与每隔几秒钟检查一次是否存在的方法结合使用 谢谢你的帮助 我将使用服务器并在websocket消息接收器上添加图像我将使用服务器并在websocket消息接收器上添加图像您正在尝试混合两个概

我不熟悉javascript和jquery,似乎无法拼凑出我需要的东西

我想我的网页加载,然后有ajax(或类似的东西),检查每隔几秒钟的一系列图像。这些图像是在背景中渲染的散点图,最终将在my/static/results/目录中生成

我发现defect.js是一种“加载图像的惰性方式”,但我不确定如何将它与每隔几秒钟检查一次是否存在的方法结合使用


谢谢你的帮助

我将使用服务器并在websocket消息接收器上添加图像

我将使用服务器并在websocket消息接收器上添加图像

您正在尝试混合两个概念,延迟加载和服务器请求。延迟加载适用于您知道要加载的图像,但您选择稍后加载(例如,当它们进入视图时)。js就足够了。对于ajax请求间隔,您需要执行以下操作:

  • 首先,设置一个服务器端脚本,返回json对象中的图像(最好)
  • 例如:在MVC.NET中,您可以创建一个JsonResult类型的操作,该操作返回一个Json对象

    [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);
    }
    
  • 加载页面时,通过ajax请求该脚本
  • 在此处阅读有关jQuery ajax参数的所有信息: 请注意,类为“myimage”的图像必须已经存在于HTML代码中

  • 当请求返回时更改图像源,等待一段时间,然后再次使用ajax(这比interval好,因为使用interval时,您在特定的时间圈内请求脚本,如果超时,则在发出新请求之前等待请求返回)

  • 另一种更简单的方法是,如果您知道映像名称没有更改,则可以将超时设置为只重新加载映像,而无需从服务器请求。像这样(代码未经测试,它包含简单的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请求间隔,您需要执行以下操作:

  • 首先,设置一个服务器端脚本,返回json对象中的图像(最好)
  • 例如:在MVC.NET中,您可以创建一个JsonResult类型的操作,该操作返回一个Json对象

    [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);
    }
    
  • 加载页面时,通过ajax请求该脚本
  • 在此处阅读有关jQuery ajax参数的所有信息: 请注意,类为“myimage”的图像必须已经存在于HTML代码中

  • 当请求返回时更改图像源,等待一段时间,然后再次使用ajax(这比interval好,因为使用interval时,您在特定的时间圈内请求脚本,如果超时,则在发出新请求之前等待请求返回)

  • 另一种更简单的方法是,如果您知道映像名称没有更改,则可以将超时设置为只重新加载映像,而无需从服务器请求。像这样(代码未经测试,它包含简单的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]);
     });