Jquery 读取控制器Rails返回的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

我正在使用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('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] }