Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
Ajax是成功的,但JSON中的Grails是空的_Json_Grails_Extjs_Sencha Touch 2 - Fatal编程技术网

Ajax是成功的,但JSON中的Grails是空的

Ajax是成功的,但JSON中的Grails是空的,json,grails,extjs,sencha-touch-2,Json,Grails,Extjs,Sencha Touch 2,在sencha,阿贾克斯总是很成功,但在grails,每当我试图找回他时,他都失败了。它应该在def data=params.data中恢复,并且def data=params不起作用 sencha中的控制器(保存时) grails中的控制器 def newProduct() { def data = JSON.parse(data) def newP = new Product(name: data.name, description: data.description

在sencha,阿贾克斯总是很成功,但在grails,每当我试图找回他时,他都失败了。它应该在
def data=params.data
中恢复,并且
def data=params
不起作用

sencha中的控制器(保存时)

grails中的控制器

    def newProduct() {
    def data = JSON.parse(data)
    def newP = new Product(name: data.name, description: data.description)
    if (newP) {
            newP = newP.save(flush: true)
            println "saved!"
            println data.name
            println data.description
        } else {
        println "error"
        }
        return result as JSON
    }
问题是,如何恢复交给grails的数据?
是的,js和jquery就像彩虹和蝴蝶一样(很好用)。

如果你的请求真的是跨域的,你将不能使用
Ext.Ajax
,你将不得不改用它。但显然不是这样,否则在服务器端根本看不到它

在任何情况下,无论是
Ext.Ajax#request
还是
Ext.data.JsonP#request
都不接受
data
选项。因此,您的请求可能会离开,但它会留下空白。在浏览器开发工具的“网络”面板中进行检查


然后,如果您坚持使用
Ext.Ajax
,请使用
jsonData
参数而不是
data
,或者使用
JsonP
,使用
params

,您可以使用以下方法提取json数据:

def jsonObject = request.JSON

编辑:我应该补充一点,它已经被解析为一个
JSONObject
,因此您不需要调用
JSON.parse()

我使用
data=JSON.stringify(data)修复了它
并在我的Ajax中将
数据
更改为
参数

这是sencha触摸,对吗?什么版本?最新版本2.2.2我想你能在你的控制器上打印数据吗,即println(数据);要查看控制器收到了什么?是的,我已经删除了crossDomain,我的数据正常返回json对象“{name:blabla,description:hehe}”。我在我的Ajax中将数据更改为jsonData,但在我的服务器中,每当我解析它时,它都会给我null。您是否在firebug、chrome dev工具或类似工具中看到您的请求数据?这似乎越来越像是一个圣杯问题,很不幸,我无法帮助解决这个问题……是的,我的数据显示在firebug、chrome控制台中的JSON类型中。奇怪的是,我有另一个项目,但没有使用Sencha Touch,而且工作得很好……我怎么知道数据正在存储到jsonObject中?你是说,你怎么知道grails已经解析json并成功地将其放在那里?一个简单的空检查就足够了。如果这不是你的意思,你能更清楚一点吗?你提供的代码没有成功,它给了我空对象。
def jsonObject = request.JSON