当我在数组中有多个元素时,它会将一个数组传递给我的控制器。但是如果数组中只有一个元素,它将它作为字符串传递给控制器而不是字符串数组。
javascript.js
var idArray = [];
idArray.push('testString');
Ext.Ajax.request({
url: '/mark/fetch',
params: {array: idArray}
});
markController.groovy
def fetch = {
def idArray = params.array
idArray.each{
print it
}
}
所以print it
一次打印testString的每个字母而不是整个字符串。
如何确保idArray始终作为数组传递给控制器?
答案 0 :(得分:3)
假设您在使用params
时指的是Grails控制器,您可以尝试使用params.list('array')
。
params
的这种性质被解释为here as Type Conversion。
答案 1 :(得分:1)
它们在两种情况下都以字符串形式发送。这是解析逗号分隔值列表的框架,该列表将数组转换为字符串(try idArray.toString()
)。它可能基于请求的Content-Type
标题执行此操作。
您可以尝试使用请求的jsonData
选项,而不是params
。如果您的框架接受JSON,则会更好地遵循数据类型。