以下にJavascriptを投稿します。すべてのブラウザで完全に機能しますが、IE8またはIE9ではまったく機能しません。エラーは発生しません。機能しません。良いニュースは、それがどこで壊れているかを正確に知ることができるということだと思いますが(以下を参照)、それを修正する理由や方法がわかりません。
私のHTMLは単純です。これは、私が取り組んでいるはるかに大きなプロジェクトのテストページにすぎません。ページ上にシンプルな形式の6つのファイル入力ボックスがあります。私がやろうとしているのは、これらの入力フィールドを取得し、空のフィールドを破棄して、ファイル(画像)を1つずつサーバーに送信することです。写真を送信するためのよりエレガントな方法があることを私は知っていますが、私が取り組んでいるサイトにとって、これはそれを行うための最良の方法です。
ソフトウェアに付属のサーバー側のPHPコードを使用しています。変更はありません。
私は独学であり、Javascriptは私にとって弱点であることを前もって認めます。私はばかではありませんが、Javascriptは初めてです。
このコードは、IEを除くすべてのブラウザーで問題なく機能します。ページが読み込まれ、document.ready()コードが実行され、FineUploaderDIVがページに配置されます。送信ボタンを押すと問題が発生します。問題を追跡しました
manualUploader.fineUploader('addFiles', current[0].files[0]);
何らかの理由でそのコード行を実行するとスクリプトが壊れ、送信は残りのコードを処理せずに続行され、「returnfalse;」を完全に無視します。提出を妨げるべき声明。私の知る限り、エラーは発生しません。IEがそのコードを他のすべてのブラウザーとは異なる方法で処理するのはなぜですか?どんな助けでもいただければ幸いです。
$(document).ready(function() {
var numFiles = 0;
var numUploaded = 0;
var manualUploader = $('#sandbox').fineUploader({
request: {
endpoint: '../../Processing/ajax_uploader.php'
},
autoUpload: false,
debug: true,
maxConnections: 1
}).on('complete', function(event, id, name, responseJSON){
numUploaded++;
var tempField = $('#' + 'pic' + (id + 1)).parent();
tempField = tempField.parent();
tempField.remove();
$('#frmNewProperty').append('<input type="hidden" name="hiddenPic' + id + '" value="' + name + '" />');
if (numUploaded == numFiles){
$('form#frmNewProperty').submit();
}
});
$('#subButton').click(function() {
var fields = $('.fileBox');
$.each(fields, function(){
var current = $(this).find('.outgoing');
var dat = current.val();
if (dat != ''){
manualUploader.fineUploader('addFiles', current[0].files[0]);
numFiles++;
}
});
manualUploader.fineUploader('uploadStoredFiles');
return false;
});
});