如何获取变量作为从控制器到 JavaScript 的响应?
Posted
技术标签:
【中文标题】如何获取变量作为从控制器到 JavaScript 的响应?【英文标题】:How to get variable as response FROM controller TO JavaScript? 【发布时间】:2020-05-14 14:18:51 【问题描述】:我有以下代码:
@RestController
public class RestTmp
@Autowired
SchemasService schemasService;
@RequestMapping(path = "/editSchema/id")
public void editSchemaById(Model model, @PathVariable("id") Integer id, HttpServletResponse response) throws IOException
String schemaERD = schemasService.editUser(id);
model.addAttribute("message", schemaERD);
response.sendRedirect("/drawdiagram");
谁能告诉我现在如何从该变量“消息”中获取价值? 我需要在我的 "/drawdiagram" ---> (drawdiagram.html)
中处理该值我用百里香试过类似的东西:
<script th:inline="javascript">
/*<![CDATA[*/
var message = /*[[$message]]*/ 'default';
console.log(message);
/*]]>*/
</script>
但我一直在变空......有人可以帮助我吗? :(
【问题讨论】:
【参考方案1】:在你的脚本标签中,试试这个:
var message = '$message';
【讨论】:
谢谢,但这对我来说不是解决方案 :( i.imgur.com/TbZWPNs.png 我不知道为什么,但这只是编译器的正常“字符串”。 可能,这个可以帮上忙:Setting up a JavaScript variable from Spring model by using Thymeleaf 我也试过了,结果为空:(我在帖子中提到过。 检查您的message
变量是否真的在控制器中设置为空。
控制器中的变量“消息”没问题,我也尝试将“任何字符串”之类的示例字符串放入“消息”中,我也得到了空值。 i.stack.imgur.com/sBMw8.png【参考方案2】:
您似乎添加了太多次“注释语句”(/* 和 */)。将它们从内部移除。并保留方括号。
<script th:inline="javascript">
/*<![CDATA[*/
var message = [[$message]]; <--- Keep square brackets on this line.
console.log(message);
/*]]>*/
</script>
我在该人的回答中使用了 user404 在评论部分中提到的相同链接,这对我有用。
【讨论】:
以上是关于如何获取变量作为从控制器到 JavaScript 的响应?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 - 如何将变量(数组和整数)从视图传递到控制器?
如何将数组数据从控制器发送到刀片并访问 javascript 变量中的数据
如何从 JavaScript 获取数据到控制器并将其存储在数据库中
如何使用 AJAX 请求将用户在类变量中的 HTML5 位置从 JavaScript 传递到 Rails 控制器?