0

我做了一些拖放功能来保存图像,我想看看我刚刚保存了哪些图像。问题是我不会等待 ajax 请求将该图像发送到服务器,我想要即时预览图像。我编写了可以做到这一点的代码,但是当我向它添加 ajax 请求时,在完成 ajax 请求之前,我在我的 html 页面上看不到这个图像。但是,如果我评论这个 ajax 请求,图像会立即出现在 html 页面上。我怎样才能得到这一切?Ajax + 即时预览。

这是我的代码,请随时问我:

// initialise our dropzone and set ondrop event function 
var dropzone = document.getElementById('ta');

dropzone.ondrop = function(e){
   e.preventDefault();
   readfiles(e.dataTransfer.files);
};

// preview image that was added to dropzone
function previewImg(file) {

   var image = new Image();


   image.src = webkitURL.createObjectURL(file);// make url for image using webkitURL

   image.width = 550; // a fake resize

   document.getElementById('body').appendChild(image); // add image to element (for example to the body)

}    

function readfiles(files) {
   var formData = new FormData();

   for (var i = 0; i < files.length; i++) {

   previewImg(files[i]); // call for preview

   formData.append('file'+i, files[i]); // add file to form


   }
   formData.append('moreInfo','myValuableValue');// you can append additional string info

   // if we comment this request preview will appear instant
   // but if we not, preview will appear only after end of ajax request
   $.ajax({
    url: './file_handler.php',
    type: 'POST',
    data: formData,
    async: false,
    success: function (data) {
        console.log('done');
    },
    cache: false,
    contentType: false,
    processData: false
   });


}       

我想解决这个问题,但我不知道如何,我使用 jQuery $.ajax 请求。顺便说一句,控制台输出也变慢了,并在请求结束后立即显示。请给我指路。

4

1 回答 1

2

在传递给 $.ajax 调用的设置中,设置async: true.

于 2013-10-02T16:43:39.133 回答