如何在Hunchentoot的easy-routes中返回多值至DOM?
解决easy-routes路由返回多值仅显示一个的问题
问题核心在于HTTP响应只能包含一个主体内容,easy-routes会将路由函数返回的第一个值作为响应主体,后续的多值会被当作HTTP状态码、响应头这类元数据处理,不会被渲染到DOM中。要让两个返回值都显示,你需要把它们合并成一个单独的响应内容,以下是具体方案:
方案1:拼接字符串返回
直接将两个值合并为一个字符串,用分隔符或换行区分:
(easy-routes:defroute test-file ("/test-file" :method :get) (&get filename) (multiple-value-bind (a b) (quick-test filename) (format nil "第一个结果:~a~%第二个结果:~a" a b)))
方案2:返回结构化HTML
如果需要更美观的展示效果,可以返回一段HTML代码,用标签将两个值分开:
(easy-routes:defroute test-file ("/test-file" :method :get) (&get filename) (multiple-value-bind (a b) (quick-test filename) (format nil "<div><h3>返回结果</h3><p>结果1:~a</p><p>结果2:~a</p></div>" a b)))
通过以上方式,服务器会返回包含两个值的单一响应主体,浏览器就能在DOM中完整显示所有内容了。
内容的提问来源于stack exchange,提问作者Vinn
相关产品推荐
相关产品推荐

