0

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 に対して有効ではないようです。

addDatajson 応答で呼び出されるメソッドを取得するには、どうすればよいですか?

4

2 に答える 2

0

iframe に書き込む場合、一部のブラウザーでは、json ではなく、テキストまたは html として書き込む必要があるようです。

于 2012-04-14T02:20:33.043 に答える
-1

handleUpload アクションで JSON を返したい場合、戻り値 (最後の行) は次のようにする必要があります。

 render result as JSON

また、次のインポートが必要です。

 import grails.converters.JSON
于 2012-04-13T21:22:10.940 に答える