エラーは、ファイル入力を追加した場合にのみ表示されます。成功イベントで FALSE が返されます。Opera でのみ発生します。
どこに問題があるのでしょうか?
エラーは、ファイル入力を追加した場合にのみ表示されます。成功イベントで FALSE が返されます。Opera でのみ発生します。
どこに問題があるのでしょうか?
jQuery は、フォームを送信するための非表示の IFRAME を作成します。これは、AJAXy の方法でファイルのアップロードを処理する唯一の方法であるためです。
この問題の根本的な原因は、空の iframe がドキュメントに挿入されたときに Opera が onload を起動することです。jQuery スクリプトは、この最初の onload イベントを予期せず、フォームの送信が完了したと見なし、送信が成功しなかったと結論付けます。http で簡単に発生しない理由は、おそらく、Opera がファイル アップロード ペイロードを暗号化する必要があるタイミングが異なることに関係しています。
IFRAME を挿入する同じスクリプトが IFRAME へのドキュメントの読み込みも開始する場合、他のブラウザーは読み込み中のドキュメントの読み込みが完了するまで待機し、1 つの読み込みイベントのみを発生させます。(またはそのようなもの - この特定のケースでは、ドキュメントの読み込みを開始するスクリプトがタイムアウトから実行されているため、同じスクリプトではありません)。
私が提案する修正は、この問題に対して既に存在する回避策の試みを強化することです。
if (!isXml && (doc.body == null || doc.body.innerHTML == '' ))
この if ステートメントで、IFRAME 内のドキュメントの URL がまだ最初の javascript:false であるかどうかを確認します。
if (!isXml && (doc.body == null || doc.body.innerHTML == '' || doc.URL=='javascript:false' ))
これは、新しいドキュメントの読み込みが完了するまで jQuery が確実に待機するのに十分なはずです。
この問題は、jQuery 1.5 と最後の jQuery Form プラグイン (2.63) に移行することで解決されたようです。