2014-02-13 40 views
0

我'设计中,我创建了一套从用户输入文件的web应用程序,压缩它们使用JSZip库,然后尝试将文件上传到服务器使用Xhr。代码如下:在XMLHttpRequest的发送产生(JSZip)zip文件(JavaScript)的

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响应。似乎客户端从未收到回应。

感谢您的帮助!

回答

0

使用本

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);