私はajax呼び出しでオブジェクトのjavascript配列をポストしようとしていますが、文字列値 "[]"を取得しています。私がconsole.logにしようとすると、配列の長さはゼロと言います。それは私が間違っているのは何検査オブジェクトのjavascript配列を投稿できません
にどのように見えるか
私は
var masterFileArray = []; // where I will store the contents
function readMultipleFiles(evt) {
//Retrieve all the files from the FileList object
var files = evt.target.files;
if (files) {
for (var i = 0, f; f = files[i]; i++) {
var r = new FileReader();
r.onload = (function (f) {
return function (e) {
var contents = e.target.result;
masterFileArray.push({name:f.name, contents: contents, type:f.type, size:f.size}); // storing as object
};
})(f);
r.readAsText(f);
}
console.log(masterFileArray);
new Ajax.Request('fileupload.php', {
method: 'post',
parameters: {files: JSON.stringify(masterFileArray)},
onSuccess: function(transport){
var response = transport.responseText;
console.log(response);
}
});
} else {
alert('Failed to load files');
}
}
document.getElementById('upfiles').addEventListener('change', readMultipleFiles, false);
ザッツをコード使用していますされて後?どんな助けもありがとうございます。
あなたは 'onload'機能で非同期要素を追加しているので、基本的に。 'readAsText'はブロックされず、ファイルが読み込まれるのを待つので、コードがただちに配列が移入される前にリクエストを行うようになります。 –
あなたはあなたのファイルがファイルリーダーによって読み取られる前に、Ajaxリクエストを行っています。 – Danmoreng
r.onloadは起動されていますか?それを知るためのConsole.log :) –