Grails json 渲染为地图
Grails json rendering as map
我正在尝试呈现来自 grails 控制器操作的 json 响应。这是我的代码:
render ([message:"voila Sent Successfully!"]) as JSON
但在 gsp 中,它的呈现方式如下:
['message':'Email Sent Successfully!']
上面的文本实际上是一个字符串(因为它在 jquery ajax 调用中的类型在成功事件处理程序中给出了一个字符串),那么我如何将它呈现为 JSON ?
我正在使用 grails 2.4.5,JSON class 实际上是 grails.converters.JSON(不是 grails.converters.deep.JSON)
照做
render ([message:"voila Sent Successfully!"] as JSON )
即插入 as JSON
括号内。
我想公开另一个答案,它避免了我已经在 IE 中发现的问题。一些较旧的 IE 版本可能会尝试将您的 JSON 下载为文件。
从您的 collection/map 生成您的 JSON 响应,然后将其呈现为字符串,因此:
import grails.converters.JSON
def YourService
def yourControllerNameHere(){
def result = YourService.generatesYourResult(),
resultJSON = result as JSON
render resultJSON.toString()
}
然后,在您的 ajax 中,使用 jQuery 将此字符串解析为 JSON-object,即:
$.ajax({
url : WEB_ROOT + 'yourUrl/yourControllerNameHere',
type : 'post',
dataType: 'text',
success : function(resultStr) {
var result = $.parseJSON(resultStr);
alert('this is your response type: ' + (typeof result));
// this is your response type: object
}
});
我正在尝试呈现来自 grails 控制器操作的 json 响应。这是我的代码:
render ([message:"voila Sent Successfully!"]) as JSON
但在 gsp 中,它的呈现方式如下:
['message':'Email Sent Successfully!']
上面的文本实际上是一个字符串(因为它在 jquery ajax 调用中的类型在成功事件处理程序中给出了一个字符串),那么我如何将它呈现为 JSON ?
我正在使用 grails 2.4.5,JSON class 实际上是 grails.converters.JSON(不是 grails.converters.deep.JSON)
照做
render ([message:"voila Sent Successfully!"] as JSON )
即插入 as JSON
括号内。
我想公开另一个答案,它避免了我已经在 IE 中发现的问题。一些较旧的 IE 版本可能会尝试将您的 JSON 下载为文件。
从您的 collection/map 生成您的 JSON 响应,然后将其呈现为字符串,因此:
import grails.converters.JSON
def YourService
def yourControllerNameHere(){
def result = YourService.generatesYourResult(),
resultJSON = result as JSON
render resultJSON.toString()
}
然后,在您的 ajax 中,使用 jQuery 将此字符串解析为 JSON-object,即:
$.ajax({
url : WEB_ROOT + 'yourUrl/yourControllerNameHere',
type : 'post',
dataType: 'text',
success : function(resultStr) {
var result = $.parseJSON(resultStr);
alert('this is your response type: ' + (typeof result));
// this is your response type: object
}
});