2012-04-13 14 views
0

私はgrailsでファイルをアップロードしようとしていますが、アップロードから返されたjsonレスポンスを処理しようとしていますが、あまり効果がありません。私の見解は次のようになります。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レスポンスで呼び出すには、何が必要ですか?

答えて

-1

あなたはhandleUploadアクションでJSONを返すようにしたい場合は、あなたのリターン(最後の行)がなければなりません:

render result as JSON 

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

import grails.converters.JSON 
+0

アーネスト、私はそれを変更し、適切にjsonをiframeにレンダリングしますが、私はまだaddData javascriptメソッドの仕事をコールバックするようには見えません。 –

+0

また、Firefoxではまだjsonファイルをダウンロードしようとしています。それをフレームにレンダリングします(ただし、クロムのフレームにレンダリングされます) –

0

IFRAMEへの書き込み、いくつかのブラウザでは、JSONとしてではなく、テキストまたはHTMLとして記述する必要があるようです。