1

ファイルをサーバーにアップロードするために使用されるhtmlフォームがあります。簡潔にするために、私は本質的な部分だけを示しました

 <form id='uploadform' method='post' enctype='multipart/form-data' action='index.php/upload'>
   <input name='myFile' id='myFile' type='file'/>
 </form>
 <input type='button' id='upload' value='Upload'/>
 <div id='response'></div>

jQuery.submit() を使用してフォームを送信します。

 $('#uploadform').submit();

ビジネスロジックはSlim PHPです: $app->post('/upload', 'uploadFile'); ....

   function uploadFile(){
       try{
           // if success uploading
           $app->redirect('/main-page');

       }catch(Exception $e){
           // if error 
           echo $e->getMessage();

       }
    }

問題:アップロードが何らかの理由で失敗した場合、例外がスローされ、ユーザーは PHP エラー ページに移動します。アップロードが例外なく完了した場合、アプリケーションはメイン ページにリダイレクトされます。

必要なのは:アップロードが成功した場合、アプリケーションは現在のようにメイン ページにリダイレクトされる必要があります...ただし、スローされた例外があった場合は、PHP エラー ページに移動する代わりに、アプリケーションはアップロード ページに留まり、 id = 'response' は例外を表示する必要があります。

jQuery submit() でこのようなことを行うことは可能ですか?

     $('#uploadform').submit(function(response){
           $('response').html(response);
     });

????

JQueryアップロードファイルプラグインが生活を楽にすることは知っています...しかし、それは私にとって選択肢ではありません...

ご指摘ありがとうございます。

出来ますか

4

4 に答える 4

2

過去に同様の問題がありました。私が思いついたのは、目に見えない iframe を使用してファイルのアップロードを投稿し、html の結果を取得することです。これが役立つことを願っています!

于 2012-08-30T06:36:33.767 に答える
2

ここでは ajax を使用する必要があります。 ajax を使用したファイル アップロードの例です。

jQuery.ajax で multipart/formdata を送信する

ajaxを使用しないと、ユーザーをリダイレクトしてGETメソッドでエラーテキストを送信し、このテキストを応答タグに入れることができます

于 2012-09-05T19:24:06.257 に答える
2

これがあなたが探しているものだと思います

html コード:

<form id='uploadform' method='post' enctype='multipart/form-data' action='index.php/upload' target="hiddeniframe">
    <input name='myFile' id='myFile' type='file'/>
</form>
<iframe name="hiddeniframe" id="hiddeniframe" style="display: none"></iframe>
<input type='button' id='upload' value='Upload'/>
<div id='response'></div>

非表示の iframe を追加し、フォームのターゲットを iframe の ID にしました。これにより、フォームがiframeに送信されるため、ページ全体がリロードされません

JavaScript コード:

<script type="text/javascript">
    window.showUploadError = function(error) {
        $('#response').html(error);
    };


     $('#uploadform').submit();
</script>

エラーが発生した場合にphpアップロード関数から呼び出されるshowUploadErrorという名前のグローバル関数を追加しました

phpコード

<?php
    function uploadFile(){
        try{
            // if success uploading
            ?>
            <script type="text/javascript">
                parent.location.href = '/main-page'
            </script>
            <?php 
            die();
        }catch(Exception $e){
        // if error 
        ?>
            <script type="text/javascript">
                parent.showUploadError('Upload failed');
            </script>
        <?php
   }
}

アップロードが成功すると、親ページ (メイン ページ) を新しい場所にリダイレクトする JavaScript コードが出力されます。それ以外の場合は、showUploadError JavaScript 関数が呼び出されます。

これは大まかな例であり、テストしていないことに注意してください。

于 2012-09-04T11:30:05.840 に答える