如何使用ajax在html中显示mysql数据

hkmswyz6  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(212)

我通常会从存储库中获取数据,并通过addattribute将数据传递给视图,如下所示:

@GetMapping("html_page")
public String dynamicPage(Model model){

    List<MySqlDataDTO> mySqlDataDTO = mySqlRepository.findAllByName(name);

    model.addAttribute("mySqlDataDTO", mySqlDataDTO);

    return "html_page";
}

然后使用thymeleaf循环遍历数据并将其显示在表中,如下所示:

<table id="table" >
                                <thead>
                                <tr>
                                    <th>ID</th>
                                    <th>Name</th>
                                    <th>Fav</th>
                                </tr>
                                </thead>

                                <tbody >
                                <tr th:each="mySqlDataDTO : ${mySqlDataDTO}" >
                                    <th th:text="${mySqlDataDTO.id}"></th>
                                    <td th:text="${mySqlDataDTO.name}"></td>
                                    <td th:text="${mySqlDataDTO.fav}"></td>
                                </tr>
                                </tbody>
                            </table>

这一切都是好的,但是,当用户首次将数据发送到db时,问题就出现了,页面将刷新并强制用户到页面顶部,从而创建了负面的用户体验。
通过让post请求首先通过ajax,我发现了如何使用ajax来解决刷新页面的问题,如下所示:

$(document).ready(function () {

$('#form').on('submit', function(e) {
    e.preventDefault();

    $.ajax({
        url : $(this).attr('action') || window.location.pathname,
        type: "POST",
        data: $(this).serialize(),
        success: function (data) {

        },
        error: function (jXHR, textStatus, errorThrown) {
            alert(errorThrown);
        }
       });
    });
 });

通过将数据发送到db而不进行页面刷新,这一方法可以很好地工作,但问题是在将数据发送到数据库之后检索数据。我不太明白如何检索数据并将其显示在一个表中给用户,以下是我到目前为止所做的,但似乎不起作用:

$(document).ready(function () {

 $('#form').on('submit', function(e) {
     e.preventDefault();

     $.ajax({
         url : $(this).attr('action') || window.location.pathname,
         type: "GET",
         contentType: "application/json;charset=utf-8",
         dataType: "json",
         success: function (data) {
             $('#table').empty();
             $.each(data.items, function(item) {
                 alert(data.name);
             });

         },
         error: function (jXHR, textStatus, errorThrown) {
             alert(errorThrown);
         }
       });
    });
 });

我添加了一个警报,只是为了将数据视为一个测试。基本上,我希望像通常通过存储库那样从数据库中获取数据,然后将这些数据传递到视图中,以如下方式显示:

但是它也应该使用ajaxget,所以一旦用户点击submit,表就会刷新(不是整个页面),并且表会反映db数据。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题