如何在jquery-file-upload响应中传回一个id?

问题描述 投票:0回答:1

我正在重写文件上传页面以使用jquery-file-upload插件。服务器(和页面)是基于grails的,表单有两个“input type ='files'”字段。两个字段中的文件都会自动上载到服务器。

我只使用基本的jquery.fileupload.js文件(不是-ui版本)。这是我正在加载的文件上传资源列表:

'jquery-file-upload' {
    dependsOn 'jquery'
    resource url: 'libs/jquery-file-upload/js/jquery.iframe-transport.js'
    resource url: 'libs/jquery-file-upload/js/jquery.fileupload.js'
    resource url: 'libs/jquery-file-upload/js/jquery.fileupload-process.js'
    resource url: 'libs/jquery-file-upload/js/jquery.fileupload-validate.js'
    resource url: 'libs/jquery-file-upload/js/vendor/jquery.ui.widget.js'
    resource url: 'libs/javascript-templates/js/tmpl.min.js'
    resource url: 'libs/jquery-file-upload/css/jquery.fileupload.css'

}

在服务器端,我创建了一个FileMeta类,它以json的形式呈现给客户端。

我的问题是,有时我想将一些额外的信息返回给客户端以在fileuploaddone事件中使用。我无法弄清楚如何做到这一点。我假设我在FileMeta类中呈现为json的任何内容都将在数据中返回,但它似乎不是。

例如,我的FileMeta类包含以下字段:

private String name;
private String size;
private String type;
private String error;
private String solutionId;
private String token;

但是当我在fileuploaddone中访问data.files时,我看不到从服务器返回的相同数据。我只获取名称,大小和类型的值。我手动将字符串设置为type,error,solutionId和token--它们被覆盖或被忽略。这是fileuploaddone当前的作用:

 upForm.on('fileuploaddone', function (e, data) { // invoke callback method on success
    $.each(data.files, function (index, file) { //loop though each file
        if (file.name){ //successful upload returns a file url
            alert("done with " + file.name);
            alert("solutionId is " + file.solutionId);
            alert("type is " + file.type);
            alert("size is " + file.size);
            alert("error is " + file.error);
            alert("token is " + file.token);
            jQuery('#solutionId').val(file.solutionId);

        } else if (file.error) {
            alert("error is " + file.error);
            var error = $('<span class="text-danger"/>').text(file.error); //error text
           alert(error);
        }
    });

});

显然有些东西正在处理返回的json。任何有关处理发生位置或如何覆盖处理的提示都将非常感激。

jquery grails jquery-file-upload
1个回答
0
投票

问题在于uploaddone回调中的这一行:

  $.each(data.files, function (index, file) { //loop though each file

data.files是jquery-upload-done小部件的特定构造。当我用data.result替换它时,返回的结果变得可用。所以,只是我的困惑。

© www.soinside.com 2019 - 2024. All rights reserved.