Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在GSP页面中传递JSON_Javascript_Jquery_Json_Grails_Gsp - Fatal编程技术网

Javascript 在GSP页面中传递JSON

Javascript 在GSP页面中传递JSON,javascript,jquery,json,grails,gsp,Javascript,Jquery,Json,Grails,Gsp,我试图将JSON数据传递给GSP页面和显示表 预期的JSON: { "data": [ [ "Tiger Nixon", "System Architect", "Edinburgh" ] ]} 我正努力做到这一点: def resp = [data:["System", "One", "Test"]] [resp: resp] 并显示: <g:javascript> $(document).ready(functio

我试图将JSON数据传递给GSP页面和显示表

预期的JSON:

{
  "data": [
    [
      "Tiger Nixon",
      "System Architect",
      "Edinburgh"
    ]
]}
我正努力做到这一点:

def resp = [data:["System", "One", "Test"]]

[resp: resp]
并显示:

<g:javascript>
  $(document).ready(function() {
  $('#example').DataTable( {
     "ajax": "${raw(resp)}"
  } ); } ); 
</g:javascript>
如何正确通过

UPD1:

当我传递字符串时,它工作:

视图:

页面源代码:

<script type="text/javascript">

    var str = '[[ "Tiger Nixon", "System Architect", "Edinburgh"]]';
    var json = JSON.parse(str);
    $(document).ready(function() {
    $('#example').DataTable( {
       data: json
    } );
} );
它会产生一个错误

[resp: resp]
改为:

[resp: resp as JSON]
已解决: 控制器:

def resp = '[[ \"Tiger Nixon\", \"System Architect\", \"Edinburgh\"]]'    
respond resp, model:[resp: resp]
def obj = [["Tiger Nixon", "System Architect", "Edinburgh"]] 
String resp = obj.encodeAsJSON();
respond resp, model:[resp: resp]
encodeAsJSON()在“”中生成正确的输出

视图:


var str='${raw(resp)}';
var json=json.parse(str);
$(文档).ready(函数(){
$('#示例')。数据表({
数据:json
} );
} );

虽然您已经让它工作了,但我认为您可能正在将数据转换为非标准方法,以获得一个全面的结果

我将尝试并解释一种替代方法,以及一种可以在您的服务中使用的方法,以构建您正在发送的地图,然后在controller中渲染该地图:

def resp = '[[ \"Tiger Nixon\", \"System Architect\", \"Edinburgh\"]]'    
respond resp, model:[resp: resp]
def obj = [["Tiger Nixon", "System Architect", "Edinburgh"]] 
String resp = obj.encodeAsJSON();
respond resp, model:[resp: resp]
def resp=[数据:[“系统”、“一个”、“测试”]]

你所拥有的是:

//A groovy map object
Map resp = [:]
//It has one element called data which contains a list
resp.data=[]
//add in system
resp.data << 'system'
resp.data << 'One'
resp.data << 'Test'
现在我们已经把我们的东西还给你了

def resp = [data:["System", "One", "Test"]]
or 
Map resp = [data:["System", "One", "Test"]]
如果你现在这样做

String myResp = (resp as JSON).toString()
您使用groovasjson首先将该映射转换为JSON,最后将JSON对象转换为字符串

您可以在服务中使用一个函数,将JSON或完成的字符串对象返回给控制器,直接动态构建数据

我只给了我的两分钱,因为我看到:

def obj = [["Tiger Nixon", "System Architect", "Edinburgh"]] 
看起来像是一些奇怪的地图,你正在建立只是为了配合你的工作直接与给定的地图,而不是这个奇怪的对象:

<g:javascript>
    var str = '${raw(resp)}';
     var jsonData = JSON.parse(str);
var jsonResult = jsonData.data;
    $(document).ready(function() {
    $('#example').DataTable( {
       data: jsonResult
    } );
} );
</g:javascript>

var str='${raw(resp)}';
var jsonData=JSON.parse(str);
var jsonResult=jsonData.data;
$(文档).ready(函数(){
$('#示例')。数据表({
数据:jsonResult
} );
} );
我想现在
jsonResult
将只保留您正在查看的对象。我在我的一个插件中提供了一个链接,可以将javascript改进为搜索结果。我用它和wschat插件做了一些json的东西


我没有测试过上面的任何一个,只是继续我是怎么做的,与你的风格相比,你的风格看起来不同寻常,可能不符合任何标准,更难构建更大的动态数据集

你是说[resp:resp as JSON]?因为只有“resp as JSON”返回空页面,而不是我的Viewyup。我忘了它是单片的。
String myResp = (resp as JSON).toString()
def obj = [["Tiger Nixon", "System Architect", "Edinburgh"]] 
<g:javascript>
    var str = '${raw(resp)}';
     var jsonData = JSON.parse(str);
var jsonResult = jsonData.data;
    $(document).ready(function() {
    $('#example').DataTable( {
       data: jsonResult
    } );
} );
</g:javascript>