javascript - 在 Ajax 调用中返回实体对象而不是字符串

标签 javascript json ajax spring-mvc freemarker

我正在使用 Freemarker(FTL) 作为前端技术开发一个 Web 门户。完整的项目基于单个 ftl 页面,并使用向导来处理不同类型的用户请求。在后端,我使用了 Spring MVC 模式,其中 Controller 将处理用户请求。我正在使用 AJAX 调用在向导上导航并显示数据屏幕。

在单击按钮时调用 java 脚本函数,该函数进一步使用 ajax 调用 Controller 方法。 Controller 方法执行一些业务逻辑并返回所需的数据。

现在我的要求是在 FTL 页面的特定部分显示 ajax 调用数据。我正在使用 @ResponseBody 将 JSON 响应返回给 ajax 调用。

到目前为止,我正在使用下面的 ajax 方法在我的屏幕的特定部分加载数据。但是在这里我需要在 Java 脚本部分编写 HTML 标记才能加载内容。但我不想在此 Ajax 调用部分中编写 HTML 标记。我想从 ajax 调用返回对象并在所需的分区上使用适当的 FTL 标记来获取和加载数据。 非常具体 - $("#result").html(respContent);部分是让我选择返回 HTML 页面。但我想返回一个可以在 FTL 标签中解析的对象/实体。

提前致谢

       $.ajax({
        type : "GET",
        cache:false,
        url : "home",
        data : {},
        success : function(mwaCatlogueProfile) {
            alert('data : '+ mwaCatlogueProfile);
            console.log("SUCCESS: ", mwaCatlogueProfile);

            var respContent = "";
            respContent += "<span class='success'> <b>Please find server list:</b>";
            respContent += " </br>";
            respContent += mwaCatlogueProfile.environment + "</span>";

            $("#result").html(respContent);
            wizard.show();
        },

最佳答案

由于 FreeMarker 是一种服务器端技术,AJAX 方法必须返回在服务器端使用 FreeMarker 呈现的 HTML。所以你所有的模板都保留在服务器端,只有一些用于正常响应,一些用于 AJAX 响应。当然,如果调用的 AJAX 服务不是专门为您的 UI 服务的,那么这将不起作用,您必须寻找 JavaScript 模板引擎。

关于javascript - 在 Ajax 调用中返回实体对象而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48383701/

相关文章:

javascript - 单选按钮在一组中仅选择一个 "YES"和一个 "No"选项

javascript - 在对象内部使用 Ajax.Request 响应? - 原型(prototype)JS

java - 使用 XStream 和 JsonHierarchicalStreamDriver 输出值,如何舍入 double ?

ajax - 通过表行启动方法

php - Ajax请求发送数据的分隔符

javascript - XMLHttpRequest-Laravel

javascript - node.js 将嵌套 json 字符串转换为嵌套 json 数组

javascript - 如何使用负载均衡器使meteor从一台服务器获取代码

mysql - JSON.stringify 字符串是否可以防止 (My)SQL 注入(inject)?

javascript - 按特定规则用JavaScript重构JSON