使用Ajax

时间:2019-02-19 08:33:55

标签: javascript java jquery ajax jsp

我有一个jsp页面,其中包含要用作视图的html,一个其余端点(我正在使用Ajax查询以获取@ResponseBody)和一个jsp中的脚本标签,它将每隔几个调用Ajax函数秒。 Ajax调用当前正在工作,至少正在按计划调用端点。

当前,当我在浏览器中导航到端点时,会看到来自Java的JSON响应。

  1. 如何获取此信息以返回带有HTML的实际JSP页面?
  2. 当Ajax调用返回并将响应的值分配给wrapper变量时,如何告诉页面更新每个字段?

我的控制器和JSP的一些代码片段。

控制器

@Controller
@RequestMapping("/")
public class BackgroundJobController {

    private BackgroundJobServiceImpl backgroundJobService = new BackgroundJobServiceImpl();

    @RequestMapping(value = "/home", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody Wrapper getHome() {
        Wrapper wrapper = new Wrapper();
        wrapper.setMessage("done");
        return wrapper;
    }
}

Home.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="message" value="${wrapper.message}"></c:set>

<script type="text/javascript"
        src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
  function getUpdate() {
    $.ajax({
      url : '/home',
      success : function(data) {
        $('#wrapper').html(data);
      }
    });
  }
</script>

<script type="text/javascript">
  var intervalId = 0;
  intervalId = setInterval(getUpdate, 3000);
</script>

  <Table class="messageTable">
    <c:if test="${not empty message}">
        <tr><td>${message}</td></tr>
    </c:if>
  </Table>

1 个答案:

答案 0 :(得分:0)

在约瑟夫(Jozef)的评论帮助下,我设法使它起作用。

我将<script>标记移到了正文的末尾,并将dataType: 'json'添加到了我的ajax请求中,因此结果已被解析。

调用成功方法后,我就可以使用

      for (var i = 0; i < 9; i++) {
        uat += '<tr><td>' + message[i] + '</td>';
        uat += '</tr>';
      }
      document.getElementById("uatTable").innerHTML = uat;

建立表格并 document.getElementById("ID").innerHTML = data 将结果显示在hmtl表中。