1

我正在使用 One Click Upload (ocupload.js) 将带有自定义邮件表单的附件上传到我服务器上的临时文件夹。

每次上传后,都会将带有文件名的小标签添加到 dropzone。每个标签都有一个小的删除按钮。按下删除按钮时,附件文件将从临时文件夹中删除,标签也将被删除。

基本的附件 UI 东西。

不,这是我的问题:当单击删除按钮时,附件会从临时文件夹中删除,相应的标签也会从 dropzone 中删除,所以我的 Ajax 调用工作正常。但在此之后,我尝试的每个 ajax 调用都失败了。不仅删除附件,还上传新附件。根本没有回应。

上传脚本:

$("#attachment").livequery(function(){
    $(this).upload({
        name: 'xfile',
        action: '/ajax/upload',
        params: {action:'attachment',folder:'/tmp/mails/new'},
        onSelect: function(){
            console.log('file selected');
        },
        onSubmit: function() {
            console.log('file submitted');
        },
        onComplete: function(response){
            response = jQuery.parseJSON(response);
            var $attachment = $('#attachment_dropzone .attachment.template').clone();

            //fill template
            $attachment.find('.name').html(response.filename);
            $attachment.attr('data-filename',response.filename);
            $attachment.attr('data-path',response.path);

            //add label
            $attachment.removeClass('template');
            $attachment.removeAttr('style');
            $('#attachment_dropzone').append($attachment.clone());
        }
    })
});

和删除处理程序

$('#attachment_dropzone .attachment .remove').livequery(function(){
    $attachment = $(this).parent().parent();
    $(this).on('click',function(){
        console.log('start remove');
        $.post('/ajax/action', { action: 'remove_attachment', filename: $attachment.data('filename'), path: $attachment.data('path') }, function(data){
            console.log('remove callback');
            if (data == 'success'){
                console.log('remove success');
                $attachment.remove();
            }else{
                alert(data);
            }
        })
    })
});

如您所见,我使用 livequery.js 来确保脚本也适用于动态添加的容器。

我可以上传任意数量的附件,那里没问题,当我删除一个时,整个 ajax 故事就结束了

4

0 回答 0