Javascript 当只有一个元素时,字符串数组作为字符串传递给我的控制器

Javascript 当只有一个元素时,字符串数组作为字符串传递给我的控制器,javascript,arrays,extjs,groovy,Javascript,Arrays,Extjs,Groovy,当数组中有多个元素时,它会将一个数组传递到控制器中。但是,如果数组中只有一个元素,它会将其作为字符串而不是字符串数组传递给控制器 javascript.js var idArray = []; idArray.push('testString'); Ext.Ajax.request({ url: '/mark/fetch', params: {array: idArray} }); markController.groovy def fetch = { def idArray =

当数组中有多个元素时,它会将一个数组传递到控制器中。但是,如果数组中只有一个元素,它会将其作为字符串而不是字符串数组传递给控制器

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
  }
}
因此,
打印它
一次打印testString的每个字母,而不是整个字符串


如何确保idArray始终作为数组传递到控制器中?

在这两种情况下,它们都作为字符串发送。这是对逗号分隔值列表进行解码的框架,该列表是将数组强制转换为字符串的结果(请尝试
idArray.toString()
)。它可能会根据请求的
内容类型
头执行此操作


您可以尝试使用请求选项,而不是
params
。如果您的框架接受JSON,那么数据的类型将得到更好的尊重。

在这两种情况下,它们都作为字符串发送。这是对逗号分隔值列表进行解码的框架,该列表是将数组强制转换为字符串的结果(请尝试
idArray.toString()
)。它可能会根据请求的
内容类型
头执行此操作


您可以尝试使用请求选项,而不是
params
。如果您的框架接受JSON,那么数据的类型将得到更好的尊重。

假设您在使用
params
时引用的是Grails controller,您可以尝试改用
params.list('array')


params
的这一性质已得到解释。

假设您在使用
params
时引用的是Grails控制器,您可以尝试改用
params.list('array')


解释了
params
的这种性质。

这是一个Grails控制器吗,因为您使用的是params?如果是,你能试着用
params.list('array')
来代替吗?@dmahapatro这正是我想要的,回答一下,我会接受的,谢谢!这是Grails控制器吗,因为您使用的是params?如果是,你能试着用
params.list('array')
来代替吗?@dmahapatro这正是我想要的,回答一下,我会接受的,谢谢!