我正在重写一个文件上传页,以使用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。任何关于处理发生在哪里,或者如何覆盖它的提示都将不胜感激。
发布于 2019-03-15 21:57:01
问题出在uploaddone回调中的这一行:
$.each(data.files, function (index, file) { //loop though each filedata.files是jquery-upload-done小部件的特定构造。当我用data.result替换它时,返回的结果变得可用。所以,这只是我的困惑。
https://stackoverflow.com/questions/55172671
复制相似问题