gpt4 book ai didi

grails - 我可以使用grails通过匿名javascript函数以某种方式发出数据

转载 作者:行者123 更新时间:2023-12-02 15:11:34 24 4
gpt4 key购买 nike

我想让 Controller 发出类似以下内容的JSON响应:

{
sidebar: {
xtype: "container",
flex: 1,
bodyCls: "my-sidebar",
itemId: "my-sidebar-container",
items: [
{
xtype: "panel",
animCollapse: false,
collapseFirst: false,
collapsed: false,
collapsible: true,
flex: 1,
bodyCls: "my-sidebar-message-section",
itemId: "my-sidebar-message-section-container",
html: "<h1>Messages (2)</h1><p>Bank will be closed on September 4th, 2013 for Labor Day</p><p>Lorem ipsum dolor sit amet, <a href="http://google.com">consectetur</a> adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>",
listeners: {
boxready: function(p) {
alert('Hi');
}
}
}
]
}
}

在我的Grails Controller 中,我这样定义它:
package com.fourgablesguy.myapp

import grails.converters.JSON

class SidebarController {

def generateSideBar() {
def sidebarItems = [
[
xtype: 'panel',
animCollapse: false,
collapseFirst: false,
collapsed: false,
collapsible: true,
flex: 1,
bodyCls: 'my-sidebar-message-section',
itemId: 'my-sidebar-message-section-container',
html: messageSectionHtml,
listeners: [
boxready: "function(p) { alert('Hi');}"
]
]
]
[
xtype: 'container',
flex: 1,
bodyCls: 'my-sidebar',
itemId: 'my-sidebar-container',
items: sidebarItems
]
}

但是grails.converters.JSON将我的function()定义转换为字符串,因此 Controller 操作发出的实际JSON具有function()的字符串:
{
sidebar: {
xtype: "container",
flex: 1,
bodyCls: "my-sidebar",
itemId: "my-sidebar-container",
items: [
{
xtype: "panel",
animCollapse: false,
collapseFirst: false,
collapsed: false,
collapsible: true,
flex: 1,
bodyCls: "my-sidebar-message-section",
itemId: "my-sidebar-message-section-container",
html: "<h1>Messages (2)</h1><p>Bank will be closed on September 4th, 2013 for Labor Day</p><p>Lorem ipsum dolor sit amet, <a href="http://google.com">consectetur</a> adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>",
listeners: {
boxready: "function(p) {alert('Hi');}"
}
}
}
]
}
}

具体问题是此行:
boxready:“function(p){alert('Hi');}”
我想知道一种替代上述方法的方法:
boxready:function(p){alert('Hi');}

这不是我要尝试以JSON返回的“对象数据”,我可以理解这是不可能的。

最佳答案

如果仔细看看json.org,您会发现JSON是一种数据交换格式,并且JSON中允许的类型不包括Function或函数声明。如果有function,那就不再是JSON了,那就是javascript。您永远不会有一个允许在其中传递函数的JSON转换器(如果您不这样做的话)

如果要将函数传递给 Controller ​​,为什么不传递要调用的函数的名称和参数,这将在单独的javascript文件中定义。

关于grails - 我可以使用grails通过匿名javascript函数以某种方式发出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com