これまでに遭遇したことがあります。私は無限の関数、forループの内部にパラメータとして文字列を渡そうとしています。私の理解から、これは再帰的なので、変数の文字列が何回変わっても、同じ文字列を送信します(1,2,3,4は(おそらく?)1,1,1,1が渡されます1,2,3,4)。私はこれを非再帰的にしたいので、以下の例では、複数のファイル入力要素のファイル名が異なっています(それらのどれも同じではないため)。JavaScript:変数を匿名関数にパラメータとして送信するときに再帰を削除します。
イベントリスナーに非再帰パラメータを受け取らせるにはどうすればよいですか?
function images_upload(e)
{
for (var i = 0; i < document.getElementById('post_files').files.length; i++)
{
var file = document.getElementById('post_files').files[i];
var n = images_name(file.name);
var xhr = new XMLHttpRequest();
if (typeof xhr.upload=='object')
{
var upload = xhr.upload;
upload.addEventListener('progress', function(e,n)
{
alert('n = '+n);
}, false);
xhr.open('POST','upload.php');
xhr.setRequestHeader('Cache-Control','no-cache');
xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
xhr.setRequestHeader('X-File-Name',file.name);
xhr.send(file);
}
else {var ns = true;}
}
if (ns) {alert('Error: your browser does not support AJAX file uploads.');}
}
私は何らかの説明をして投票を行い、有効な回答を受け入れることができます。
はい、私はテストしているもののコンテキストを知っています(Firefox 10、Chrome 17(?)、Opera 12でテストしています)。
なぜ 'progress'イベントを使用していますか?代わりに 'readystatechange'イベントを使うでしょうか? – fcalderan
readystatechangeイベントは私の質問とは関係ありません。私は実際には、リモートでも同様の状況でも問題を再現する別の方法を決定する時間がありません。 – John