javascript中的Grails hashmap变量给出了不同的格式

Grails hashmap variable in javascript gives different format

本文关键字:格式 中的 Grails hashmap 变量 javascript      更新时间:2023-09-26

在我的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] } 

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

您的电流输出由Map resulttoString()产生,可用于打印数据,但将其传输到javascript不是很有用。

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

def json = result as JSON

并将其返回到您的型号:

[json : json ]

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

var obj = jQuery.parseJSON("${ json.toString() }");