1

在我的 grails 控制器中:

 assert result == [hus:['hus@gmail.com', 'SE', 'on', '9908899876'], vin:['vin@gmail.com', 'SD', 'on', '7765666543']]
println "result is::"+result
println result.getClass() 

    [result:result]  //passing model to view

打印:

[hus:[hus@gmail.com, SE, on, 9908899876], vin:[vin@gmail.com, SD, on, 7765666543]]
class java.util.LinkedHashMap

但是当我从我的视图页面获取这个哈希图并从 javascript 访问时

 $(function(){
    alert('${result}');
});

它打印

 {
  hus=[hus@gmail.com,SE,9902766542],
  vin = [vin@gmail.com, SE,887654433]
  }

这不是有效的对象,不是有效的对象,(: replaced by =)应该是

{ hus:[hus@gmail.com,SE,9902766542], vin : [vin@gmail.com, SE,887654433] } 

为什么会这样?我该如何纠正?

4

1 回答 1

2

您当前的输出由toString()of产生Map result,可用于打印数据,但对于将其传输到 javascript 不是很有用。

您应该在控制器中将结果转换为 json:

def json = result as JSON

并将其返回给您的模型:

[json : json ]

之后,您可以使用JQery.parseJSON在 Javascript 中创建一个对象:

var obj = jQuery.parseJSON("${ json.toString() }");
于 2013-09-03T09:50:53.963 回答