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 调用对话框。您最终可能要做的是打开一个对话框进行上传,等待响应,然后关闭它并打开另一个显示结果的对话框。

于 2012-08-31T22:48:00.397 回答