javascript - 通过 AJAX 访问文件的正确 url 是什么?

标签 javascript java html ajax thymeleaf

结合上下文:

有一个远程目录clearing-dit\logs,其中有一系列日志(portal.logtest.log...)。此目录映射到 HTML 页面,其中显示所有 .log's。一旦点击其中一个,就会显示其各自的内容。

Exemple

目前,我使用 thymeleaf 来显示内容:

<html xmlns:th="http://www.thymeleaf.org" th:include="layout :: page">
                ...
   <div ...>
    <p th: utext = "$ {log.content}"> Log content </ p>
  </div>

问题是此内容以静态方式显示,我需要在文件更新时继续显示它。我去搜索了一下,发现我可以/需要通过 AJAX 来做到这一点,但 AJAX 的概念对我来说相当模糊。

目前,我正在尝试以一种非常简单的方式做到这一点:

$.ajax({
    url : "/log",
    type : "post",
    success : function(data) {
        document.getElementById('content').innerHTML = data;
    }
});

以及(设置日志内容):

@RequestMapping(value = "/log", method = RequestMethod.POST)
public String logContent(@Valid Log log, BindingResult bindingResult, Map<String, Object> model) {
    if (log.getInitLine() == 0 && log.getFinalLine() == 0) {
        try {
            fileNumberLines(log);
            log.setContent(getLogContentByRange(0, log.getInitLine(), log.getFinalLine(), logsDir + "/" + log.getFilename()));
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
    } else {
        log.setContent(getLogContentByRange(0, log.getInitLine(), log.getFinalLine(), logsDir + "/" + log.getFilename()));
    }

    model.put("path", logsDir);
    model.put("log", log);
    model.put("currentPage", "logs");
    model.put("root", root);

    return "log";
}

但是我获取的是页面本身,而不是文件的内容。

Return AJAX call

这很有意义,因为我传递的是页面本身的 url。所以,我的问题是:如何通过 URL 访问日志内容?正确的网址是什么?

最佳答案

如果您将 View 用于 AJAX,则不应从 Controller 方法返回 View 的名称。您需要从该方法返回数据(对象)。您需要将数据转换为 JSON(可以在 Javascript 中使用),因此需要使用 @ResponseBody 标记该方法。您还需要jackson-databind在类路径 (com.fasterxml.jackson.core jackson-databind) 上进行 JSON 转换。

@RequestMapping(value = "/log", method = RequestMethod.POST)
@ResponseBody
public String logContent(@Valid Log log, BindingResult bindingResult, Map<String, Object> model) {
    if (log.getInitLine() == 0 && log.getFinalLine() == 0) {
        try {
            fileNumberLines(log);
            log.setContent(getLogContentByRange(0, log.getInitLine(), log.getFinalLine(), logsDir + "/" + log.getFilename()));
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
    } else {
        log.setContent(getLogContentByRange(0, log.getInitLine(), log.getFinalLine(), logsDir + "/" + log.getFilename()));
    }

    model.put("path", logsDir);
    model.put("log", log);
    model.put("currentPage", "logs");
    model.put("root", root);

    return log;//return an Object containing data (or your own Value Object)
}

关于javascript - 通过 AJAX 访问文件的正确 url 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51747538/

相关文章:

java - 实例变量是否应该从 Java 中的非静态上下文中进行操作

html - 需要通过 css 更改 html 值,如下所述。我使用的是wordpress,所以不好编辑核心文件

javascript - 显示基于选择菜单选项的 JavaScript 计算

javascript - 将 JQuery UI 效果应用于文本时出现滚动条问题

javascript - Undefined 不是一个对象(评估 'this.state.username' )

javascript - 从 contenteditable div 获取内容

java - Android - 通过ScrollView的一部分传递触摸事件

java - 有没有办法创建一个可以在不同类上的所有 junit 单元测试之前运行的 spring 上下文?

Android:提取文章主要内容

html - jQuery 克隆 html,更新 DOM?