2011-08-02 7 views
1

現在、PHPのuploadprogress拡張機能を使用してフォームのアップロードの進行状況を表示しています。私はここでチュートリアルに従っており、例のようにすべてが機能します:http://www.ultramegatech.com/blog/2010/10/create-an-upload-progress-bar-with-php-and-jquery/jQuery:フォームのデフォルトアクションを停止する

しかし、この例では、フォームはiframeを対象としています。呼び出しを受け取ったPHPスクリプトがデータをチェックし、成功した場合はすべての有効なものをリダイレクトし、失敗した場合はエラーの強調表示でページをリロードします。

私は離れフォームは通常通り機能し、それがないその事を、やるだろうと... ...

target="upload-frame" 

を取った場合のため...私が想定しました。

しかし今は、ターゲットやIFRAMEは(と私はあまりにもJavaScriptからこれを削除しなかった)が存在しないことをプログレスバーを更新するために、ループjavascript関数はバックでgetProgress()PHP関数から任意のデータを取得していないようです。

手動でアクセスでき、情報があります。

デフォルトでは、ファイルがアップロードされるのを待っている間にブラウザが効果的にリダイレクトしようとしているため、ページ上で他の呼び出しを行うことはできないと仮定しています。誰かがファイルのアップロードが完了するまでリダイレクトの動作を停止する方法を知っていますか?

+0

うーん、私はあなたが本当に行うことができる唯一の方法だと思います:

var html = $('#upload-frame').contents().find('body').html(); $('body').html(html); 

はエラーがない場合、私は単純にそうように意図されたページへのリダイレクトを実行します。だから私は、次の体の交換を行いますajax "ファイルのアップロードは、iframeハックを使用して行われます。メモリサーバであれば、jquery ajaxが実際にファイルデータを投稿できるとは思わないので、それ以外の場合は動作しません。 – TommyBs

答えて

1

私が見つけた解決策は、iframeをフォームのターゲットとして引き続き使用することです。その後、アップロードが完了すると、iframeのコンテンツに関するいくつかのチェックが実行されます。

私はこのように、それはエラーでリダイレクトページまたは同じページのいずれかが含まれているかどうかを確認するために#アップロード・フレームの内容を確認するjQueryを使ってまず:

$('#upload-frame').contents().find('.errors').size(); 

エラーの大きさがより大きい場合0の場合、問題が発生したことがわかり、これはユーザーに表示する必要があります。 「

window.location = "finished.php"; 
関連する問題