上传文件的同时,你可以继续与网站互动


Uploading a file meanwhile you keep interacting with the website

我有一个web应用程序,在服务器端使用PHP MVC,在客户端使用javascript。我想做的是上传一个文件,同时在网站上做其他任务,直到服务器做出响应。

下面我发布了我现在使用的代码:

function xhr(url, data, callback) {
   'use strict';
   var request = new XMLHttpRequest();
   request.onreadystatechange = function () {
      if (request.readyState === 4 && request.status === 200) {
         callback('The content has been uploaded');
      }
   };
   request.open('POST', url);
   request.send(data);
}

这里的主要问题是,当我请求一个新页面时,我不知道如何获得响应。

有什么帮助吗?。

如果你的网站不是一个单页应用程序,一旦用户点击链接并被重定向,如果上传进度不完整,可能会被取消。如果在用户转到另一个页面时上传到服务器完成,它将成功,但您将丢失对已初始化xhr对象的对象的引用,因此,您将无法获得响应。现在,我要做的是看看shared webworkers API。

您可以将文件上载委托给工作者(这是一个单独的线程)。

//define a worker
var worker = new Worker('worker.js');
worker.addEventListener('message', function (e) {
    console.log('Worker said: ', e.data);
}, false);
worker.postMessage('Hello World'); // Send data to our worker.

和你的worker.js文件:

var request = new XMLHttpRequest();
request.onreadystatechange = function () {
    if (request.readyState === 4 && request.status === 200) {
        self.postMessage(data);
    }
};
request.open('POST', url);
request.send(data);