2012-06-17 43 views
0

我爲我的項目使用grails 1.3.4,並且一切正常,直到我決定將我的項目遷移到grails 2.0.3。在grails從1.3.4升級到2.0.3之後渲染數據爲JSON不工作

對於我通過javascript通過gsp頁面進行的每個AJAX調用,JSON方法的渲染效果都很好。但現在它不起作用。 我使用呼叫的代碼是:

的Javascript在我的GSP頁:

var url = "${createLink(controller:'user',action:'someAction')}"; 
$.get(url,function(data){ 
    if (data.results != "") { 
    alert(data.results); 
    } 
}); 
在我的控制器

代碼:

import grails.converters.JSON 

.... 
.... 

def someAction = { 
    def data = [results:"Ajax call working"] 
    render data as JSON 
} 

上面的代碼在Grails的完美的工作對我來說1.3.4但現在我得到以下錯誤

No signature of method: grails.converters.JSON.render() is applicable 
for argument types: (com.xxxx.yyy.UserController$_closure36) 
values: [[email protected]] 
Possible solutions: render(java.io.Writer), 
render(javax.servlet.http.HttpServletResponse), 
every(), find(), find(groovy.lang.Closure), 
every(groovy.lang.Closure). 

我真的卡住了,不知道該怎麼辦。有什麼我想念的。

而且我使用Groovy的 版本:1.8.6與JVM:1.6.0_26

回答

4

嘗試這種模式,而不是:

def someAction = { 
    def data = [results:"Ajax call working"] 

    render(contentType:'text/json'){ 
     data 
    } 
} 
+0

灰色:它實際工作:)但是我不知道爲什麼之前的模式沒有奏效。因爲我在其他grails 2.0.3項目中使用這種模式,並且它在那裏工作。請給我更多的信息。順便說一句,很多。 – Wasim

+0

我實際上不確定爲什麼一個人可以工作,另一個人不工作 - 我認爲他們是相同的。 – GreyBeardedGeek

+0

灰色:我今天注意到,我有兩個不同的控制器說A和B.現在在A渲染數據爲JSON正在工作,而在B中,您發佈的模式正在工作。兩個軟件包的導入都幾乎相同。不知道什麼是錯的:( – Wasim