如何在jQueryAJAX中修改成功块内的freemarker变量值

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

本文关键字:freemarker 变量值 成功 修改 jQueryAJAX      更新时间:2024-01-16

如何在jQuery AJAX中更改成功块内的freemarker变量的值,我的页面有两个控制器,第一个控制器用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);
    }

my to 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变量得到了我放在成功块中的值,但在我按下提交按钮之前它显示为"成功",我相信成功块是在我点击提交按钮之后执行的,所以我不知道为什么它在我按下按钮之前就有这个值,它在我按提交按钮之前应该有"我在第一个控制器中"

Freemarker在服务器上生成它的输出,然后将其发送到浏览器。浏览器从未看到任何免费标记"代码"。您需要使用javascript/jQuery更新strong元素。

因此,与您的<分配…>使用类似的东西

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