2012-04-13 67 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

Ernesto,我改變了它,它確實渲染json到iframe,但我似乎仍然無法回調addData JavaScript方法工作 – 2012-04-13 21:25:15

+0

也在Firefox上它仍然嘗試下載json文件,而不是將其渲染到框架(儘管呈現在鑲邊上的框架) – 2012-04-13 21:28:06

0

當寫一個iframe,對於某些瀏覽器來說,它似乎需要寫成文本或html,而不是json。