我如何修改 jQuery AJAX 中成功块内的 freemarker 变量值

how can i modify a freemarker variable value inside a success block in jQuery AJAX

如何在 jQuery AJAX 的成功块中更改 freemarker 变量的值,我的页面有两个控制器,第一个 returns 我是一个简单的字符串使用 GET 方法的视图名称,第二个是使用 json 和 POST 方法

处理数据的视图

他们在这里

@RequestMapping(value = "myform", method = RequestMethod.GET)
    public String formmethod(Model model) {



        model.addAttribute("successMessage", "i'm in the firts controller");

        return "forms/myform";
    }

我的第二个控制器

@RequestMapping(value = "myform", method = RequestMethod.POST)
    public @ResponseBody String getTags(@RequestBody final String json, Model model) 
    throws IOException 
    {
         ObjectMapper mapper  =  new ObjectMapper();

         User userMapped=  mapper.readValue(json, User.class);

         User person  =  new Usuario();
         person.setName("new name");
         person.setLastName("new lastname");


         model.addAttribute("successMessage", person.getName());

         return toJson(userMapped);
    }

我的 Json 方法

private String toJson(User person) 
    {
        ObjectMapper mapper = new ObjectMapper();
        try 
        {
            String value = mapper.writeValueAsString(person);
            // return "["+value+"]";
            return value;
        } 
        catch (JsonProcessingException e) 
        {
            e.printStackTrace();
            return null;
        }
    }

和我的页面 myform.html

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>

<script type="text/javascript">

        function doAjaxPost() 
        {
            // get the form values
            var name= $('#name').val();
            var lastName = $('#lastName ').val();

            var json = {"name" : name, "lastName " : lastName };
            console.log(json);
            var FreeMarkervariable = "${successMessage}";

            //this brings me the value that i put in the firts controller


            $.ajax(
            {
                type: "POST",
                url: "myform",
                data: JSON.stringify(json), 

                contentType: "application/json; charset=utf-8",
                dataType: "json",
                cache: false,

                beforeSend: function(xhr) 
                            {
                                xhr.setRequestHeader("Accept", "application/json");  
                                xhr.setRequestHeader("Content-Type", "application/json");  
                            },
                success: function(data) 
                        {


//HERE I WANT TO CHANGE THE VALUE OF MY FREEMARKER VARIABLE SO I CAN 
//PRINT A SUCCESS MESSAGE IN A DIV


                            <#assign successMessage = "success">



                        },
                error:function(data,status,er) { 
                    alert("error: "+data+" status: "+status+" er:"+er);
                }

            });
        }
</script>
    <!-- NEW WIDGET START -->
    <article class="col-sm-12">
        <div class="alert alert-warning fade in">
            <button class="close" data-dismiss="alert">
                ×
            </button>
            <i class="fa-fw fa fa-warning"></i>
            <strong>${successMessage} I WANT TO PRINT A SUCCESS MESSAGE HERE </strong> 
        </div>
    </article>
    <!-- WIDGET END -->
<fieldset>
 <legend>Name in view</legend>
    <form name="myform">
        Name in view:   <input type="text"   name="name">
        <br>
        Last Name in view:   <input type="text" id="lastName" name="lastName">
        <br>
        <input type="button" value="Add Users" onclick="doAjaxPost()">

    </form>
</fieldset>
 <br>

到目前为止,我的 freemarker 变量获得了我放入成功块中的值,但它出现 "success" 在我按下提交按钮之前,我相信成功块是在我点击提交按钮后执行的,所以我不知道为什么它甚至在我按下按钮之前就已经有了值,在我按下提交按钮之前它应该有 "i'm in the firts controller"

Freemarker 在服务器上生成它的输出,然后发送到浏览器。浏览器永远不会看到任何自由标记 'code'。您需要使用 javascript/jQuery.

更新强元素

所以不要用你的 <#assign...> 使用这样的东西

$("strong").text("Success");