【问题标题】:Grails json rendering as mapGrails json 渲染为地图
【发布时间】:2015-11-09 03:24:51
【问题描述】:

我正在尝试从 grails 控制器操作中呈现 json 响应。这是我的代码:

render ([message:"voila Sent Successfully!"]) as JSON

但在 gsp 中,它呈现如下:

['message':'Email Sent Successfully!']

上面的文本实际上是一个字符串(因为它在 jquery ajax 调用中的 typeof 在成功事件处理程序中给出了一个字符串),那么如何将它呈现为 JSON?

我使用的是 grails 2.4.5,而 JSON 类实际上是 grails.converters.JSON(不是 grails.converters.deep.JSON)

【问题讨论】:

    标签: json grails gsp


    【解决方案1】:

    照做

    render ([message:"voila Sent Successfully!"] as JSON ) 即插入as JSON

    在括号内。

    【讨论】:

    • 它的工作。但是,如果我将地图分配给像 def result=[message: "voila sent successfully!"]; render result as JSON 这样的变量,这也应该有效?
    【解决方案2】:

    我想公开另一个答案,它可以避免像我已经在 IE 中发现的问题。一些较旧的 IE 版本可能会尝试将您的 JSON 下载为文件。

    从您的集合/地图生成 JSON 响应,然后将其呈现为字符串,因此:

    import grails.converters.JSON
    def YourService
    
    def yourControllerNameHere(){   
        def result = YourService.generatesYourResult(),
        resultJSON = result as JSON
    
        render resultJSON.toString() 
    }
    

    然后,在您的 ajax 中,使用 jQuery 将此字符串解析为 JSON 对象,即:

    $.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
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-05
      • 2011-05-17
      • 2012-03-27
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多