【问题标题】:Grails file upload json responseGrails文件上传json响应
【发布时间】:2012-04-13 19:54:09
【问题描述】:

我正在尝试在 grails 中上传一个文件,然后处理从上传返回的 json 响应,但我没有取得多大成功。我的观点如下:

<script type="text/javascript">
  function addData(e) {
  alert('adding data');
  }
</script>

<g:form name="upload-form" url="[controller: 'dataset', action:'handleUpload']"
enctype="multipart/form-data" target="hidden-upload-frame">
  File: <input type="file" name="myFile" />
  <button type="submit">Upload</button>
</g:form>
<iframe id="hidden-upload-frame" name="hidden-upload-frame" style="display: none"   onload="addData"></iframe>

在我的控制器中我有

def handleUpload() {
  def file = request.getFile('myFile')
  def result
  // do some fileprocessing to create the result
  render results as JSON

}

但是当我提交表单时,浏览器只会提示我下载 JSON 响应。我也尝试过使用 formRemote,但 request.getFile 似乎对 formRemote 无效。

我需要做什么才能让 addData 方法被 json 响应调用?

【问题讨论】:

    标签: json grails file-upload


    【解决方案1】:

    在写入 iframe 时,对于某些浏览器来说,它似乎需要写入为文本或 html,而不是 json。

    【讨论】:

      【解决方案2】:

      如果您想在您的 handleUpload 操作中返回 JSON,您的返回(最后一行)必须是:

       render result as JSON
      

      您还需要以下导入:

       import grails.converters.JSON
      

      【讨论】:

      • Ernesto,我改变了它,它确实正确地将 json 渲染到 iframe,但我似乎仍然无法使 addData javascript 方法的回调工作
      • 同样在 Firefox 上,它仍然尝试下载 json 文件,而不是将其渲染到框架(虽然它渲染到 chrome 上的框架)
      猜你喜欢
      • 2021-09-13
      • 2012-10-30
      • 1970-01-01
      • 2021-05-24
      • 2017-04-25
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多