0

私はこのようなコードを持っています:

var links="";
function upload(file){
   var fd = new FormData();
   fd.append("image", file); // Append the file 
   // Create the XHR (Cross-Domain XHR FTW!!!)
   var xhr = new XMLHttpRequest();
   xhr.open("POST", "http://someapi.com");
   xhr.onload = function() {
      // Big win!
      // The URL of the image is:         
        links += "[IMG]"+JSON.parse(xhr.responseText).upload.links.original+"[/IMG]\n";                 
        //showResult(JSON.parse(xhr.responseText).upload.link);
   }
   // Ok, I don't handle the errors. An exercice for the reader.
   // And now, we send the formdata
   xhr.send(fd);
}
function catchFiles(files){
    nfiles = files.length;
    //var links="";
    for(var i=0;i<nfiles;i++){
        upload(files[i]);
    }                       
}
function showResult(links){     
    document.getElementById('div_result').innerText = links;                    
}

私が欲しいのは、catchFilesが完了するまで待つ方法です(すべてのファイルのアップロードが完了します)その後、showResultが呼び出されます。

解決策はありますか?

ありがとう

4

2 に答える 2

1

XHR 呼び出しが完了すると、onreadystatechangewith readyState== 4 が発生します。そのため、次ではなく、そのイベントに関数を割り当てる必要がありますonload

xhr.onreadystatechange = function(){
    if (xhr.readyState == 4){

        console.log(xhr.responseText);

    }
}
于 2012-11-27T17:24:40.080 に答える