我正在使用cljs给一个环形后端打一个GET电话。
问题是,我也需要传递一个数组。
cljs-ajax对数组进行如下编码:
?array[0]=one&array[1]=tworing期望数组编码如下:
?array=one&array=two因此,使用wrap-params中间件,我不会得到数组,而只会得到不同的键值对({array[0] "one" array[1] "two})。
有解决这个问题的方法吗,还是必须手动解析服务器端的params?
谢谢
发布于 2015-11-12 22:04:14
这个限制并不适用于ring或cljs。这是http协议中的一个限制。在GET请求中,params只是?name=val&name=val,没有机制告诉另一端的服务器params表示数据数组--也就是说,区分应该解释为数组的规范名称/值对和名称值对。
因此,您需要手动将环形中间件生成的映射转换为处理程序中的数组。您可以使用启发式实现中间件,该中间件在param名称中查找具有特定‘模式’的get参数,例如#" array [\d+]“,并将它们提取到数组中并插入到params映射中。但是,我认为这是一个模棱两可的问题,除非您需要在许多处理程序中这样做,否则它可能会带来比它解决的更多的问题。
最简单的方法是将您的调用转换为post,而不是get和json。
https://stackoverflow.com/questions/33673597
复制相似问题