首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件上传

文件上传
EN

Stack Overflow用户
提问于 2014-06-24 16:52:30
回答 4查看 163关注 0票数 0

我有一个rails 4应用程序,我使用jQuery文件上传发送请求到载波。我的代码看起来是:

代码语言:javascript
复制
<input name='photo[image]' type='file' data-url='photos/create' multiple="true" class='fileupload'/>

我的jquery:

代码语言:javascript
复制
$('.fileupload').fileupload({
    dataType: 'json',
    done: function (e, data) {
      $.each(data.result.files, function (index, file) {
        alert(file.name);
      });
    }
});

我在照片控制器中的创作动作:

代码语言:javascript
复制
def create
@photo = Photo.new(photo_params)

respond_to do |format|
  if @photo.save
    format.json { render json: @photo }
  else
    format.json { render json: @photo.errors, status: :unprocessable_entity }
  end
end
end

private
   def photo_params
     params.require(:photo).permit!
   end

我的照片模特:

代码语言:javascript
复制
class Photo < ActiveRecord::Base
  mount_uploader :image, ImageUploader
end

当我创建一张照片时,载波正在正确地创建一个图像(在公共/上传目录中),但是由于某种原因,我的jQuery出现了错误:

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'length' of undefined

我不知道是什么导致了这一切?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-04 20:54:31

我应该把这个作为评论,但我没有足够的声誉,所以我很抱歉。

我认为你只需要使用data.files而不是data.result.files

像这样

代码语言:javascript
复制
$('.fileupload').fileupload({
    dataType: 'json',
    done: function (e, data) {
      $.each(data.files, function (index, file) {
        alert(file.name);
      });
    }
});
票数 2
EN

Stack Overflow用户

发布于 2014-06-30 13:29:13

在我看来,您响应的json没有done回调所期望的结构。由于它是在data.result.files上调用data.result.files,所以我认为响应的结构应该更像这样:

render json: {result: { files: [@photo] } }

还可以尝试调试通过将数据记录到回调中的javascript控制台返回的数据。

done: function(e, data) { console.log(data) }

票数 1
EN

Stack Overflow用户

发布于 2014-07-05 05:04:58

data对象的结构将results字段param显示为一个保存与文件无关的各种字段的对象;因此,data.result.files会导致.each()出错。

使用以下方法:

代码语言:javascript
复制
$.each(data.files, function (index, file) {
   alert(file.name);
});

工作演示 (删除服务器端代码以捕获对象,只需修改上面的代码)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24392209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档