ファイルのアップロードを含むフォームと、アップロードされたファイルをリストするグリッドの下にあります。ajaxForm ( jquery.form.js ) を使用して ajax ファイルのアップロードを実行しています。ファイルのアップロードが成功すると、サーバーから返されたセキュリティ コード (サーバー上で作成) が返されることを期待します。これは、後でグリッドのリンクからそのファイルをダウンロードする際に引数として渡されます。
ファイルのアップロードが失敗した場合 (つまり、無効なファイルまたは大きすぎるファイル)、ユーザーに同じことを通知する必要があります。同じためにtaconite プラグインを使用します。アップロードが成功すると、メッセージが表示され、関数が呼び出されてグリッドにセキュリティ コードが設定されます。失敗した場合は、ユーザーにメッセージを表示し、関数を呼び出してグリッドからアップロード エントリを削除します (失敗したため)。
私はグリッドからフィールドを削除するための同様のメカニズムを持っています.delete postリクエストが送信され($.post(...))、taconiteの結果がサーバーから返されます。これは期待どおりにうまく機能します。しかし、.ajaxForm (ファイルのアップロードあり) は IE では期待どおりに動作しません。
ajaxForm 呼び出しのスニペットは次のとおりです -
成功: 関数 (responseXML、statusText、xhr、frm) { ... }
FF(Firefox) では何も心配する必要はありません。taconite の応答 (responseXML に入っています) は正しく解析されます。しかし、IE では responseXML は xml objectです。IE の一部のバージョンは、xhr.responseXML.xml または xhr.responseXML.text または xhr.responseXML.documentElement.textContent から xml テキストを提供しますが、一貫性がありません。とにかくxmlテキストを取得するには?
それに加えて、一時 div で xml コンテンツを手動で設定しても、taconite プラグイン操作を呼び出したり実行したりしません!
これは複雑に聞こえるかもしれませんが、私が得た唯一の手がかりは、ajaxForm + taconite + ファイルのアップロードに問題があるということです。ファイルのアップロードでない場合、taconite は IE と FF の両方で期待どおりに実行されます (ファイルの削除機能のように)。微調整して試してみることができる提案があれば、共有してください!
返されたタコナイトのサンプルを次に示します -
<taconite>
<replaceContent select="#fileOprMsg">
<span id="oprResult">Operation was successful<span class="error"></span></span>
<script>$().ready(function () { showOprResult('#oprResult', 1); });</script></replaceContent>
<eval><![CDATA[ fileUploadResponse('dcrc%22uycok0lri%3d9%3a3g%3a6%3a%3b%2f7ehd%2f6chf%2f%3a6de%2fghgcg4c7dgh4%3dVtwg',true,-1); ]]> </eval>
</taconite>