我可以从ajax调用更新(而不是替换内容)jsp div标签内的内容

时间:2014-10-21 10:25:34

标签: javascript jquery ajax jsp scriptlet

我有一个场景,在我的JSP中,在div标签下,我在scriptlet中有一些内容,每当我从服务器请求回来时,它都会从数据库中读取数据。 以前每次更新时我都会刷新整个页面,它也会加载资源并增加页面大小,所以我想到了为什么不只是更新div标签 -

我的div标签样本就像 -

 <div id="container">
    <%
            StudentLogin name = (StudentLogin)request.getAttribute("name");
            List<Cube> personList = (List)request.getAttribute("message");

            for(Cube cube: personList){
                String usedBy =  cube.getUsedby().trim();
                boolean alreadyUsed = (usedBy.length()>0);
                String ipAddress = cube.getIp();
                String cubeName = cube.getCubename();
                String details = cube.getDetails();
                String since = "Not Busy  ";        
                String cubeCirle = "pricemid";
        %>
            <div class="<%= mainClass%> ">
            <h1> <%= ipAddress%> </h1>
            <div class="<%= cubeCirle%>"> 
                <h2> <%= cubeName%> </h2> 
             </div>
                 <div class="infos">  
                 <h3>  <%= details%> </h3>               
                 <h2>  <%= usedBody%> </h2>
                 <h3>  <%= since%> </h3>
             </div>
              <div class="<%= priceFooterClass%> ">
                <div class="<%= buttonclass%> ">
                  <a href="#" onClick="suc('<%=userName%>','<%=Password%>','<%=usedBody%>','<%=cubeName%>')"> <%= buttonName%> </a>
                </div>
              </div>
            </div>
        <% } %>
</div>

因此,对于每个ajax调用,我期待名称和消息的新值,并基于我想要更新我的div标签。

以下是我的ajax电话的样本 -

  $.ajax({
        url: '${pageContext.request.contextPath}/usercontroller/success.json',
        data: JSON.stringify(datamodel),
        type: "POST",
        beforeSend: function(xhr) {
            xhr.setRequestHeader("Accept", "application/json");
            xhr.setRequestHeader("Content-Type", "application/json");
        },
        success: function(resp) {           
            $("#container").html(resp); 
        },
        error: function(e){  
         alert('Error121212: ' + e);  
        } 
    });

通过ajax调用,我意识到它只是替换了div标签内的全部内容,而不是更新或只是调用它。 它尝试使用加载方法,但更新了整个页面,所以我应该做些什么来刷新特定div标签内的内容和更新值,仅此而已。

目标 -

每次从具有名称和消息的服务器获取不同的值,并且基于div标记下的内容必须更改,所以我应该替换整个div命令并创建内部html以将div标记替换为做那个或什么..

1 个答案:

答案 0 :(得分:0)

您必须记住,JSP已在服务器上完全处理,并且发送到浏览器的结果是纯HTML。 您不能只是将浏览器端的JSON对象传递给div,并期望进行JSP渲染。

快速而肮脏的解决方案是在成功回调中手动重建标记 $("#container").html("<h1>" + resp.name + "</h1>");

更复杂的解决方案是检索您尝试从服务器更新的部分的整个标记,而不仅仅是作为JSON的数据。 或者您可以包含客户端模板解决方案。