使用AJAX在幕后生成?

时间:2014-03-25 20:51:01

标签: php jquery ajax

我想使用imagejpeg()创建图像,但它们渲染所需的时间比加载页面所需的时间要长,因此图像要么不显示,要么被截断。

我试图延迟加载页面,直到完全创建图像而没有解决方法,所以现在我试图在页面加载之前创建图像。

我的失败如下:

function createimages(x) {
    $.post("image-dev.php?curID=" + x, function(rdata) {
        console.log(rdata);
    });

    setTimeout(function() {
        window.location = "image-review.php?curID=" + x;
    }, 5000);
}

image-dev.php是我的图像创建文件,它从我的数据库中提取所有必要的数据,然后使用imagejpeg创建并保存我的文件夹。

如果我直接导​​航到image-dev.php并且关联了正确的ID。我的图像被正确创建和保存。

我希望在加载图片评论页面之前,我可以使用AJAX调用image-dev.php。我希望这会“预先开发”图像,以便在审阅时能够正确加载。

我的rdata的console.log显示image-dev.php正在加载并执行,但文件没有被创建。

在场景后面创建图像是否存在问题?

2 个答案:

答案 0 :(得分:1)

当图像已经创建时,php可以返回" true"。 使用ajax,你可以做到这一点。

function createimages(x){
  $.ajax({
    url: "image-dev.php?curID="+x,
    beforeSend: function( xhr ) {
    //here you can hide elements or other DOM manipulations
  }
  }).done(function( rdata) {
    console.log(rdata);
   //when php is ready you can show images or other DOM manipulations
  }
});

});

答案 1 :(得分:0)

克里斯蒂安,谢谢!

我决定放弃发展我的图像并使用你的策略的想法。

由于图像在显示时仍然截断,我现在在图像评论页面上有占位符图像,并在完成后加载新图像。

我还不确定如何查看图片是否被截断,因此我必须在重置占位符src属性之前添加延迟。

$.ajax({
     type: 'POST',
     url: "image-dev.php?curID="+x,

     success: function(rdata) {
       console.log(rdata);
       setTimeout(function(){
           $('#placeholder').attr('src', 'newImage.jpg'); 
       },5000);  
     }
});

这似乎可以接受!