如何获取变量作为从控制器到 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 控制器?

如何从 javascript 变量发送表单值并在 php 中作为整数接收? [复制]

如何使用范围变量将值从控制器获取到指令中