0

これは、アップロードが成功した場合やファイルが大きすぎる場合に ajax を介してメッセージを返す、ちょっとした ajax アップロード スニペットです。upload.php Iis には、フォーム ページに返されるメッセージを含む div があります。ページ自体に戻るのではなく、モーダル ウィンドウに div/メッセージが返されるように、これをどのように変更するのか疑問に思っていました...誰かが私を助けてくれることを願っています。どこかでjquery uiを使用する必要がありますか? みんなありがとう!

     $j(document).ready(function(){
var upload = new AjaxUpload('#userfile', {
        //upload script 
        action: '/modules/mod_artuploader/upload.php',
        onSubmit : function(file, extension){
        //show loading animation
        //$j("#loading").show();
        //check file extension
        if (! (extension && /^(jpg|png|jpeg|gif)$/.test(extension))){
       // extension is not allowed
             $j("#loading").hide();
             $j("<span class='error'>Error: Not a valid file extension</span>").appendTo("#file_holder #errormes");
            // cancel upload
       return false;
            } else {
              // get rid of error
            $j('.error').hide();
            }   
            //send the data
            upload.setData({'file': file, 'userid': <?php echo $user->id?> });
        },
        onComplete : function(file, response){
        //hide the loading animation
        $j("#loading").hide();
        $j("#userfile").hide();
        $j('label[for="userfile"]').hide();
        //add display:block to success message holder
        $j(".success").css("display", "block");
        $j(".picture").css("display", "block");
        //This lower portion gets the error message from upload.php file and appends it to our specifed error message block
        //find the div in the iFrame and append to error message    
        var oBody = $j(".iframe").contents().find("div");
        //add the iFrame to the errormes td
        $j(oBody).appendTo("#file_holder #errormes");

}
    });
}); 
        </script>
4

1 に答える 1

0

モーダルに何を使用するかによって異なります。別のブラウザー ウィンドウ、ドッキング解除された状態、または新しいタブでフローティングしている場合、これは非常に複雑な問題です。あなたが取り上げたので、jQuery UI ダイアログは優れた選択肢です。モーダル フォームの例を見てみましょう。ユーザーは、ファイル セレクターでモーダル ポップアップをアクティブにする「アップロード」ボタンをクリックできます。$(foo).dialog('open')とでダイアログの表示を切り替えることができます$(foo).dialog('close')。その後、アップロード スクリプトはダイアログ内に存在し、そこにある要素とやり取りすることができます。少なくとも、コールバックは appendTo を使用してダイアログを呼び出すことができると思います。最終的にやらなければならないことは、アップロードのために 1 つのダイアログを開き、応答を待ってから閉じて、別のダイアログを開いて結果を表示することです。

于 2012-08-31T22:48:00.397 に答える