2009-06-04 21 views
9

私はJavascriptベースのアップロード進捗メーターを作成しています。標準のマルチパート送信メソッド(iframeにファイルを送信するのではなく)を使用したいと思います。送信中に、アップロードの%完了を返すajaxリクエストを送信し、それに応じて進行状況を更新します。Safariはフォーム送信後にAJAXリクエストを許可していませんか?

これはすべてFireFox & IEでスムーズに機能します。しかし、Safariは、メインフォームが提出された後、ajaxリクエストの完了を妨げるようです。デバッガでは、リクエストヘッダーを見ることができますが、レスポンスは受信されないように見えます。

誰でもこれを知っているか、それを回避する方法はありますか?

+2

いくつかのコードを投稿してください。多分、問題を回避する方法があります。 – ichiban

答えて

0

これは実際に私にとって正しい動作のように聞こえます。そして、私はFirefoxとIEが別の方法で動作することに驚いています。

あなたがページを残そうとしていて、まだあなたとやりとりしているページがいたずらに聞こえます!

これはなぜ利点があるのか​​分かりますが、あなたが現在アクセスしているURIまたは最悪のドメインでPOSTを実行している場合にのみ願っています。

2

iframeを使用してフォームを送信していますか?私は、フォームが提出されると、DOMへのそれ以上の変更を行うことができない状態になると推測しています。

詳細についてはthis oneなどのチュートリアルを確認してください。

3

はい、これはSafariとWebKit(つまりGoogle Chrome)に基づくブラウザが動作する方法です。私は最近、ファイルアップロードの進捗状況についてもこれに遭遇しました。私はhttp://drogomir.com/blog/2008/6/30/upload-progress-script-with-safari-supportで見られるのと同じテクニックを使用して、ajaxを動作させました。私の場合、私はアプリケーションの外観をドログロミルの使い方に変えたくはありませんでしたが、技術そのものが機能しました。基本的に、解決策は、SafariでjQueryとAJAXスクリプトを読み込む非表示のiframeを作成することです。次に、トップフレームはフォーム送信時にそのフレームの関数を呼び出します。他のすべてのブラウザは以前と同じように動作します。

関連する問題