2014-02-13 39 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);