Jquery 读取控制器Rails返回的json数据
我正在使用jquery文件上传插件 我上传一个文件并生成一个json响应,如下所示:Jquery 读取控制器Rails返回的json数据,jquery,ruby-on-rails-3,Jquery,Ruby On Rails 3,我正在使用jquery文件上传插件 我上传一个文件并生成一个json响应,如下所示: @upload = Upload.new(params[:upload]) respond_to do |format| if @upload.save format.json {render :json => [ @upload.to_jq_upload ].to_json} end $('#fileupload').bind('fileuploadd
@upload = Upload.new(params[:upload])
respond_to do |format|
if @upload.save
format.json {render :json => [ @upload.to_jq_upload ].to_json}
end
$('#fileupload').bind('fileuploaddone', function (e, data) { }
我想做的是在json对象被发回时从中获取信息,但我不知道它被发送到哪里。有人能帮我弄清楚如何获取这些信息吗
my application.js中还有一个回调函数,如下所示:
@upload = Upload.new(params[:upload])
respond_to do |format|
if @upload.save
format.json {render :json => [ @upload.to_jq_upload ].to_json}
end
$('#fileupload').bind('fileuploaddone', function (e, data) { }
我看了这些数据,不知道如何解析它。如果我做data.url,它会给我一个要删除的url,没有id,所以这是上传数据。我想要的是解析返回的数据。例如data.result,但这只是给我对象
任何帮助都将不胜感激
以下是视图:
<div id="fileupload">
<%= form_for @upload, :html => { :multipart => true } do |f| %>
<div class="fileupload-buttonbar">
<label class="fileinput-button">
<span>Add files... or drop them to upload</span>
<%= f.file_field :photo, :id => "upload_photo" %>
</label>
</div>
<% end %>
<div class="fileupload-content">
<table class="files"></table>
<div class="fileupload-progressbar"></div>
</div>
</div>
<script id="template-upload" type="text/x-jquery-tmpl">
<tr class="template-upload{{if error}} ui-state-error{{/if}}">
<td class="preview"></td>
<td class="name">${name}</td>
<td class="size">${sizef}</td>
{{if error}}
<td class="error" colspan="2">Error:
{{if error === 'maxFileSize'}}File is too big
{{else error === 'minFileSize'}}File is too small
{{else error === 'acceptFileTypes'}}Filetype not allowed
{{else error === 'maxNumberOfFiles'}}Max number of files exceeded
{{else}}${error}
{{/if}}
</td>
{{else}}
<td class="progress"><div></div></td>
<td class="start"><button>Start</button></td>
{{/if}}
<td class="cancel"><button>Cancel</button></td>
</tr>
</script>
<script id="template-download" type="text/x-jquery-tmpl">
<tr class="template-download{{if error}} ui-state-error{{/if}}">
{{if error}}
<td></td>
<td class="name">${name}</td>
<td class="size">${sizef}</td>
<td class="error" colspan="2">Error:
{{if error === 1}}File exceeds upload_max_filesize (php.ini directive)
{{else error === 2}}File exceeds MAX_FILE_SIZE (HTML form directive)
{{else error === 3}}File was only partially uploaded
{{else error === 4}}No File was uploaded
{{else error === 5}}Missing a temporary folder
{{else error === 6}}Failed to write file to disk
{{else error === 7}}File upload stopped by extension
{{else error === 'maxFileSize'}}File is too big
{{else error === 'minFileSize'}}File is too small
{{else error === 'acceptFileTypes'}}Filetype not allowed
{{else error === 'maxNumberOfFiles'}}Max number of files exceeded
{{else error === 'uploadedBytes'}}Uploaded bytes exceed file size
{{else error === 'emptyResult'}}Empty file upload result
{{else}}${error}
{{/if}}
</td>
{{else}}
<td class="preview">
{{if thumbnail_url}}
<a href="${url}" target="_blank"><img src="${thumbnail_url}"></a>
{{/if}}
</td>
<td class="name">
<a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
</td>
<td class="size">${sizef}</td>
<td colspan="2"></td>
{{/if}}
<td class="delete">
<button data-type="${delete_type}" data-url="${delete_url}">Delete</button>
</td>
</tr>
</script>
{:multipart=>true}do | f |%>
添加文件。。。或者把它们放下来上传
“上传照片”%>
${name}
${sizef}
{{if error}}
错误:
{{if error==='maxFileSize'}}文件太大
{{else error==='minFileSize'}}文件太小
{else error==='acceptFileTypes'}}不允许使用文件类型
{{else error==='maxNumberOfFiles'}}超过了最大文件数
{{else}}${error}
{{/if}
{{else}
开始
{{/if}
取消
{{if error}}
${name}
${sizef}
错误:
{{if error==1}}}文件超过了upload\u max\u filesize(php.ini指令)
{{else error==2}}文件超过了最大文件大小(HTML表单指令)
{{else error==3}}文件仅部分上载
{{else error==4}}未上载任何文件
{{else error==5}}缺少临时文件夹
{{else error==6}}无法将文件写入磁盘
{{else error==7}}文件上载已被扩展名停止
{{else error==='maxFileSize'}}文件太大
{{else error==='minFileSize'}}文件太小
{else error==='acceptFileTypes'}}不允许使用文件类型
{{else error==='maxNumberOfFiles'}}超过了最大文件数
{{else error==='uploadedBytes'}}上载的字节超过了文件大小
{{else error==='emptyResult'}}空文件上载结果
{{else}}${error}
{{/if}
{{else}
{{如果缩略图{u url}}
{{/if}
${sizef}
{{/if}
删除
我不熟悉ruby。但是,在fileuploaddone绑定中,“data”对象包含要直接解析或访问的数据
data.jqXHR.responseText应包含返回数据的json字符串。这样,您就可以(至少在Javascript中)调用以下内容(取决于您对JSON的使用情况)来获取JSON对象:
jQuery.parseJSON(data.jqXHR.responseText)
-或
或者(并且更容易),您可以检查数据。结果是否有效。如果是这样的话,它看起来就像:
[Object{name=“image.jpg”,size=43554,type=“image/jpeg”,more…}]
要访问文件名(例如),您可以通过以下方式获取:
数据。结果[0]。名称
希望这有帮助。我对ruby不熟悉。但是,在fileuploaddone绑定中,“data”对象包含要直接解析或访问的数据 data.jqXHR.responseText应包含返回数据的json字符串。这样,您就可以(至少在Javascript中)调用以下内容(取决于您对JSON的使用情况)来获取JSON对象:
jQuery.parseJSON(data.jqXHR.responseText)
-或
或者(并且更容易),您可以检查数据。结果是否有效。如果是这样的话,它看起来就像:
[Object{name=“image.jpg”,size=43554,type=“image/jpeg”,more…}]
要访问文件名(例如),您可以通过以下方式获取:
数据。结果[0]。名称
希望这有帮助。请在您的控制器中尝试
render :json => { files: [@upload.to_jq_upload] }
请在您的控制器中尝试此功能
render :json => { files: [@upload.to_jq_upload] }