【问题标题】:How to show AJAX response data on a website如何在网站上显示 AJAX 响应数据
【发布时间】:2020-08-20 20:42:16
【问题描述】:

我正在编写一个 Spring Boot 应用程序,其中我有一个网站,其中有一个包含几个电脑游戏的子菜单。当我单击此子菜单中的某个位置时,我希望服务器发送该游戏的图像(图像是指图像的路径)作为响应,并且在响应返回到我在网站上的 JS 后,我想要在网站上显示。我已经做的是向服务器发送请求,并根据请求数据选择图像。我不知道如何发送回复并在我的网站上使用它。
这是我的代码:

爪哇:

@RequestMapping("/change-game")
public String changeGame(HttpServletRequest request, @RequestBody GameData data){
    File file;
    String game = data.getName();
    switch (game) {
        //some code which actually works. I removed it to save space
    }
    request.setAttribute("gameIcon", file);
    return "index";
}

JavaScript:

$("#selectGameSubmenu li").click(function(e){
    e.preventDefault();
    var option = $(this).data("option");
    console.log(option + " " + JSON.stringify({"option": option}));
    $.ajax({
        type: "POST",
        url: "http://localhost:8080/change-game",
        data: JSON.stringify({name: option}),
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    });
});

HTML:

 <img src="${gameIcon}" alt="${altGameIcon}"
             style="width:100px;height:100px" class="gameLogoCenter"/>

【问题讨论】:

    标签: javascript java html ajax spring-boot


    【解决方案1】:

    我将添加一个新方法,该方法仅返回您的 AJAX 调用使用的图像路径。

    例如

    @ResponseBody
    @PostMapping("/change-game-icon")
    public String changeGameIcon(@RequestBody GameData data) {
        File file;
        String game = data.getName();
        switch (game) {
            //some code which actually works. I removed it to save space
        }
        return file.toString();
    }
    

    在你的 JS 中

    $.ajax({
      url: '/change-game-icon',
      method: 'post', // or "type" if your jQuery is really old
      data: JSON.stringify({name: option}),
      dataType: 'text',
      contentType: 'application/json'
    }).done(iconPath => {
      $('img.gameLogoCenter').prop('src', iconPath)
    })
    

    【讨论】:

    • 非常感谢!但是,如果我想同时发送多个变量,我该怎么办?
    • 您可以从您的方法中返回几乎任何对象,Spring 将使用 Jackson 将其序列化为 JSON、XML 等(基于 Accepts 请求标头,或者您可以在您的方法中指定 produces请求映射注释)。所以如果你想用更复杂的东西来响应,为它创建一个 POJO 并从你的方法中返回它
    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 2021-01-09
    • 1970-01-01
    • 2019-08-05
    • 2014-02-06
    • 2021-03-14
    • 2011-04-14
    • 2010-10-14
    相关资源
    最近更新 更多