【问题标题】:Sending generated (JSZip) zip file in XmlHttprequest (javascript)在 XmlHttprequest (javascript) 中发送生成的 (JSZip) zip 文件
【发布时间】:2014-02-13 07:51:36
【问题描述】:

我正在设计一个 Web 应用程序,在其中我从用户输入创建一组文件,使用 JSZip 库压缩它们,然后尝试使用 Xhr 将文件发布到服务器。代码如下:

var content = zip.generate({type : "blob"});
var server_path = document.getElementById('build_server').value;
server_path = server_path + '/upload_project';
console.log(server_path);
global_oreq = new XMLHttpRequest();
var file_name = design_name + '.zip';
var formData = new FormData();
var json_build_answer = '';
global_oreq.open("POST", server_path, true);
global_oreq.onload = function(e) {
    // json_build_answer = JSON.parse(oReq.responseText);
    console.log('test');
    console.log(global_oreq.responseText);
};
formData.append('file', content, file_name);
global_oreq.send(formData);

我对这段代码的问题是永远不会调用 onload 函数。我认为这是因为我的函数在请求的 ned 之前退出,所以我在参数中将 Xhr 请求同步设置设为 false。这导致了 NS_ERROR。我读到 Xhr 无法在远程域上执行请求。真的吗 ?你会怎么做来解决这个问题。 ? 从服务器端(我要发布到的那个)上看到的是文件被接收并返回了 json 响应。似乎客户端从未收到响应。

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery ajax post xmlhttprequest


    【解决方案1】:

    使用这个

    var content = zip.generate({type : "blob"});
    var server_path = document.getElementById('build_server').value;
    server_path = server_path + '/upload_project';
    console.log(server_path);
    var global_oreq = new XMLHttpRequest();
    var file_name = design_name + '.zip';
    var formData = new FormData();
    var json_build_answer = '';
    global_oreq.open("POST", server_path, true);
    global_oreq.onload = function(e) {
        // json_build_answer = JSON.parse(oReq.responseText);
    console.log('test');
    console.log(global_oreq.responseText);
    };
    formData.append('file', content, file_name);
    global_oreq.send(formData);
    

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 1970-01-01
      • 2017-03-28
      • 2011-09-03
      • 2020-10-15
      • 2018-08-14
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      相关资源
      最近更新 更多